DNS:域名系统

1 引言
域名系统( D N S)是一种用于 T C P / I P应用程序的分布式数据库,它提供主机名字和 I P地址之间的转换及有关电子邮件的选路信息。D N S提供了允许服务器和客户程序相互通信的协议。D N S提供了允许服务器和客户程序相互通信的协议。
  从应用的角度上看,对 D N S的访问是通过一个地址解析器(r e s o l v e r)来完成的。该解析器主要是通过两个库函数 g e t h o s t b y n a m e(3) 和g e t h o s t b y a d d r( 3 )来访问的,它们在编译应用程序时与应用程序连接在一起。前者接收主机名字返回 I P地址,而后者接收I P地址来寻找主机名字。解析器通过一个或多个名字服务器来完成这种相互转换。
 

2 DNS 基础
每个结点(图 1 4 - 1中的圆圈)有一个至多 6 3个字符长的标识。这颗树的树根是没有任何标识的特殊结点。命名标识中一律不区分大写和小写。命名树上任何一个结点的域名就是将从该结点到最高层的域名串连起来,中间使用一个点“.”分隔这些域名(注意这和 U n i x文件系统路径的形成不同,文件路径是由树根依次向下的形成的)。域名树中的每个结点必须有一个唯一的域名,但域名树中的不同结点可使用相同的标识。

以点“.”结尾的域名称为绝对域名或完全合格的域名 F Q D N( Full Qualified DomainN a m e),例如s u n . t u c . n o a o . e d u .。如果一个域名不以点结尾,则认为该域名是不完全的。如何使域名完整依赖于使用的 D N S软件。如果不完整的域名由两个或两个以上的标号组成,则认为它是完整的;或者在该域名的右边加入一个局部后缀。例如域名 s u n通过加上局部后缀. t u c . n o a o . e d u .成为完整的。

顶级域名被分为三个部分:
1) a r p a是一个用作地址到名字转换的特殊域(我们将在 1 4 . 5节介绍)。
2) 7个3字符长的普通域。有些书也将这些域称为组织域。
3) 所有2字符长的域均是基于 I S O 3 1 6 6中定义的国家代码,这些域被称为国家域,或地理域

一个独立管理的 D N S子树称为一个区域 ( z o n e )。一个常见的区域是一个二级域,如n o a o . e d u。许多二级域将它们的区域划分成更小的区域。
3 DNS的报文格式

这个报文由1 2字节长的首部和4个长度可变的字段组成。标识字段由客户程序设置并由服务器返回结果。客户程序通过它来确定响应与查询是否匹配。

QR 是1 bit字段: 0表示查询报文, 1表示响应报文。
• o p c o d e是一个4 bit字段:通常值为0(标准查询),其他值为1(反向查询)和2(服务器状态请求)。
• A A是1 bit标志,表示“授权回答 (authoritative answer)”。该名字服务器是授权于该域的。
• T C是1 bit字段,表示“可截断的 ( t r u n c a t e d )”。使用U D P时,它表示当应答的总长度超过5 1 2字节时,只返回前5 1 2个字节。
• R D是1 bit字段表示“期望递归(recursion desired)”。该比特能在一个查询中设置,并在响应中返回。这个标志告诉名字服务器必须处理这个查询,也称为一个递归查询。如果该位为 0,且被请求的名字服务器没有一个授权回答,它就返回一个能解答该查询的其他名字服务器列表,这称为迭代查询。

• R A是1 bit字段,表示“可用递归”。如果名字服务器支持递归查询,则在响应中将该比特设置为 1。在后面的例子中可看到大多数名字服务器都提供递归查询,除了某些根服务器。
• 随后的3 bit字段必须为0。
• r c o d e是一个4 bit的返回码字段。通常的值为 0(没有差错)和 3(名字差错)。名字差错只有从一个授权名字服务器上返回,它表示在查询中制定的域名不存在。

3.1 DNS查询报文中的问题部分

查询名是要查找的名字,它是一个或多个标识符的序列。每个标识符以首字节的计数值来说明随后标识符的字节长度,每个名字以最后字节为 0结束,长度为0的标识符是根标识符。

查询名是要查找的名字,它是一个或多个标识符的序列。每个标识符以首字节的计数值来说明随后标识符的字节长度,每个名字以最后字节为 0结束,长度为0的标识符是根标识符。计数字节的值必须是 0 ~ 6 3的数,因为标识符的最大长度仅为 6 3

每个问题有一个查询类型,而每个响应(也称一个资源记录,我们下面将谈到)也有一个类型。大约有 2 0个不同的类型值,其中的一些目前已经过时。

3.2 DNS响应报文中的资源记录部分

D N S报文中最后的三个字段,回答字段、授权字段和附加信息字段,均采用一种称为资源记录R R( Resource Record)的相同格式。

域名是记录中资源数据对应的名字。它的格式和前面介绍的查询名字段格式(图 1 4 - 6)相同。
类型说明 R R的类型码。它的值和前面介绍的查询类型值是一样的。类通常为 1,指I n t e r n e t数据。
生存时间字段是客户程序保留该资源记录的秒数。

资源记录通常的生存时间值为 2天。资源数据长度说明资源数据的数量。该数据的格式依赖于类型字段的值。对于类型 1( A记录)资源数据是4字节的I P地址。
10 小结
D N S是任何与I n t e r n e t相连主机必不可少的一部分,同时它也广泛用于专用的互联网。层次树是组成D N S域名空间的基本组织形式。


应用程序通过名字解析器将一个主机名转换为一个 I P地址,也可将一个 I P地址转换为与之对应的主机名。名字解析器将向一个本地名字服务器发出查询请求,这个名字服务器可能通过某个根名字服务器或其他名字服务器来完成这个查询。


所有的D N S查询和响应都有相同的报文格式。这个报文格式中包含查询请求和可能的回答资源记录、授权资源记录和附加资源记录。通过许多例子了解了名字解析器的配置文件以及D N S的优化措施:指向域名的指针(减少报文的长度)、查询结果的高速缓存、 i n - a d d r . a r p a域(查找I P地址对应的域名)以及返回的附加资源记录(避免主机重发同一查询请求)。
 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值