域名系统
第11章域名系统在TCP/IP互联网中,可以使用IP 地址的32位整数识别主机。虽然这种地址能方便、紧凑地表示传递分组的源地址和目的地址,但是对一般用户而言,IP 地址还是太抽象了,最直观的表达方式也
第11章域名系统
在TCP/IP互联网中,可以使用IP 地址的32位整数识别主机。虽然这种地址能方便、紧凑地表示传递分组的源地址和目的地址,但是对一般用户而言,IP 地址还是太抽象了,最直观的表达方式也不外乎将它分为4个十进制整数。为了使用户能够利用好读、易记的字符串为主机指派名字,IP 互联网采用了域名系统(domain name system)。
实质上,主机名是一种比IP 更高级的地址形式,主机名的管理、主机名-IP 地址映射等就是域名系统要解决的重要问题。
11.1互联网的命名机制
互联网提供主机名的主要目的是为了让用户更方便地使用互联网。一种优秀的命名机制应能很好地解决以下3个问题:
1)全局唯一性:一个特定的主机名在整个互联网上是唯一的,它能在整个互联网中通用。不管用户在哪里,只要指定这个名字,就可以唯一地找到这台主机。
2)便于名字管理:优秀的命名机制应能方便地分配名字、确认名字以及回收名字。
3)高效地进行映射:用户级的名字不能为使用IP 地址的协议软件所接受,而IP 地址也不能为一般用户所理解,因此,二者之间存在映射需求。优秀的命名机制可以使域名系统高效地进行映射。
,11.1.1层次型命名机制
命名机制可以分成两类,一类是无层次型命名(flat naming) 机制,另一种是层次型命名(hierarchy naming)机制。
在无层次命名机制中,主机的名字简单地由一个字符串组成,该字符串没有进一步的结构。从理论上说,无层次名字的管理与映射很简单。其名字的分配、确认以及回收等工作可以由一个部门集中管理。名字-地址之间的映射也可以通过一个一对一的表格实现。但是,随着无层次命名机制中名字数量的增加,不但名字冲突的可能性增大,单一管理机构的工作负担变重,而且名字的解析效率会变得越来越低。因此,无层次型命名机制只能适用于主机不经常变化的小型互联网。对于主机经常变化、数量不断增加的大型互联网,无层次命名机制无能为力。事实上,无层次命名机制已被TCP/IP互联网淘汰,取而代之的是一种层次型命名机制。
所谓的层次型命名机制就是在名字中加入结构,而这种结构是层次型的。具体地说,在层次型命名机制中,主机的名字被划分成几个部分,而每一部分之间都存在层次关系。实际上,在现实生活中经常应用层次型命名,例如,人们邮寄信件时采用的邮件人、发件人地址(如:中华人民共和国河北省石家庄市解放路)就具有一定结构和层次。
层次型命名机制将名字空间划分成一个树状结构(如图11-1所示),树中每一结点都有一个相应的标识符,主机的名字就是从树叶到树根(或从树根到树叶)路径上各结点标识符的有序序列。例如, www→ nankai→edu →cn 就是一台主机的完整名字。
,图 11-1层次型名字的树状结构 1
显然,只要同一子树下每层结点的标识符不冲突,完整的主机名绝对不会冲突。在图11-1所示的名字树中,尽管相同的edu 出现了两次,但由于它们出现在不同的结点之下(一个在根结点下,一个在cn 结点下),完整的主机名不会因此而产生冲突。
层次性命名机制的这种特性,对名字的管理非常有利。一棵名字树可以划分成几个子树,每个子树分配一个管理机构。只要这个管理机构能够保证自己分配的结点名字不重复,完整的主机名就不会重复和冲突。实际上,每个管理机构可以将自己管理的子树再次划分成若干部分,并将每一部分指定一个子部门负责管理。这样,对整个互联网名字的管理也形成了一个树状的层次化结构。
在图11-2显示的层次化树型管理机构中,中央管理机构将其管辖下的结点标识为com 、edu 、cn 、us 等。与此同时,中央管理机构还将其com 、edu 、cn. us的下一级标识符的管理分别授权给com 管理机构、edu 管理机构、cn 管理机构和us 管理机构。同样,cn 管理机构又将com 、 edu、 bj、tj 等标识符分配给它的下述结点,并分别交由com 管理机构、edu

管
,理机构、bj 管理机构和tj 管理机构进行管理。只要图中的每个管理机构能够保证其管辖的下一层结点标识符不发生重复和冲突,从树叶到树根(或从树根到树叶)路径上各结点标识符的有序序列就不会重复和冲突,由此而产生的互联网中的主机名就是全局唯一的。

图11-2 名字管理机构的层次化
11.1.2 TCP/IP互联网域名
在TCP/IP互联网中实现的层次型名字管理机制叫做域名系统(Domain Name System,DNS)。TCP/IP互联网中的域名系统一方面规定了名字语法以及名字管理特权的分派规则,另一方面则描述了关于高效的名字-地址映射分布式计算机系统的实现方法。
域名系统的命名机制叫做域名(domain name)。完整的域名由名字树中的一个结点到根结点路径上结点标识符的有序序
,列组成,其中结点标识符之间以“. ”隔开,如图11-1所示。域名“cs.nankai.ed u.cn”由cs 、nankai 、edu 和cn 4个结点标识符组成(根结点标识符为空,省略不写),这些结点标识符通常被称为标号(label), 而每一标号后面的各标号叫做域(domain) 。 在“cs.nankai.edu.cn”中,最低级的域为“cs. nankai. edu. cn”,代表计算机系;第3级域为“nankai. edu. cn",代表南开大学;第2级域为
“edu.cn”,代表教育机构;顶级域为"cn", 代表中国。 11.1.3 Internet 域名
TCP/IP域名语法只是一种抽象的标准,其中各标号的值可任意填写,只要原则上符合层次型命名规则的要求即可。因此,任何组织均可根据域名语法构造本组织内部的域名,但这些域名的使用当然也仅限于组织内部。
作为国际性的大型互联网,Internet 规定了一组正式的通用标准标号,形成了国际通用顶级域名,如表11-1所示。顶级域的划分采用了两种划分模式,即组织模式和地理模式。前7个域对应于组织模式,其余的域对应于地理模式。地理模式的顶级域是按国家进行划分的,每个申请加入Internet 的国家都可以作为一个顶级域,并向Internet 域名管理机构NIC 注册一个顶级域名,如cn 代表中国、us 代表美国、uk 代表英国、jp 代表日本等。

其次,将顶级域的管理权分派给指定的子管理机构,各子管理机构对其管理的域进行继续划分,即划分成二级域,并将各二级域的管理权授予给其下属的管理机构,如此下去,便形成了层次型域名结构。由于管理机构是逐级授权的,所以最终的域名都得到NIC 承认,成为Internet 中的正式名字。
图11-3 Internet域名结构
图11-3列举出了 Internet域名结构中的一部分,如顶级域名cn 由中国互联网中心CNNIC 管理,它将cn 域划分成多个子域,包括ac 、com 、edu 、 gov、net 、org 、bj 和tj 等,并将二级域名edu 的管理权授予CERNET 网络中心。CERNET 网络中心又将edu 域划分成多个子域,即三级域,各大学和教育机构均可以在edu 下向CERNET 网络中心注册三级域名,如edu 下的tsinghua 代表清华大学、nankai 代表南开大学,并将这两个域名的管理权分别授予清华大学和南开大学。南开大学可以继续对三级域nankai 进行划分,将四级域名分配给下属部门或主机,如nankai 下的cs 代表南开大学计算机系,而www 和ftp 代表两台主机等。
表11-2列出了我国二级域名的分配情况。

表11-2 我国二级域名分配
11.2 域名解析
域名系统的提出为TCP/IP互联网用户提供了极大的方便。通常构成域名的各个部分(各级域名)都具有一定含义,相对于主机的IP 地址来说更容易记忆。但域名只是为用户提供了一种方便记忆的手段,主机之间不能直接使用域名进行通信,仍然要使用IP 地址来完成数据的传输。所以当应用程序接收到用户输入的域名时,域名系统必须提供一种机制,该机制负责将域名映射为对应的IP 地址,然后利用该IP 地址将数据送往目的主机。
11.2.1 TCP/IP域名服务器与解析算法
那么到哪里去寻找一个域名所对应的IP 地址呢?这就要借助于一组既独立又协作的域名服务器完成。这组域名服务器是解析系统的核心。
所谓的域名服务器实际上是一个服务器软件,运行在指定的主机上,完成域名-IP 地址映射。有时候,我们也把运行域

名服务软件的主机叫做域名服务器,该服务器通常保存着它所
,管辖区域内的域名与IP 地址的对照表。相应地,请求域名解析服务的软件叫域名解析器。
在TCP/IP 互联网中,对应于域名的层次结构。域名服务器也构成一定的层次结构,如图11-4所示。这个树型域名服务器的逻辑结构是域
名解析说法赖以实现
的基础。总的来说,
域名解析采用自顶向
下的算法,从根服务
器开始直到叶服务
器,在其间的某个结
点上一定能找到所需
的名字-地址映射。当
然,由于父子结点的
上下管辖关系。域名图 11-4 名字服务器层次结构示意图 1 解析的过程只需走过
条从树根结点开始到另一结点的一条自顶向下的单向路径,无需回溯,更不用遍历整个服务器树。
但是,如果每一个解析请求都从根服务器开始,那么,到达根服务器的信息流量将随互联网规模的增大而加大。在大型互联网中,根服务器有可能因负荷太重而超栽。因此,每一个解析请求都从跟服务器开始并不是一个很好地的解决方案。 实际上,在域名解析过程中,只要域名解析器软件知道如何访问任意一个域名服务器,而每一域名服务器都知道根服务器的IP 地址(或父结点服务器的IP 地址),域名解析就可以顺利地进行。
域名解析有两种方式,一种叫递归解析(recursive
resolution ),另一种叫反复解析(iterative resolution)。使用递归解析方式的解析器希望其请求的域名服务器能够给出域名与IP 地址对应关系的最终答案,一次性完成全部名字-

地
,址变换过程,如图ll-5a 所示。如果解析器请求的域名服务器
保存着求域名与IP 地址
的对应关系,那么这台服
务器直接应答解析器;否
则,该域名服务器请求其
他域名服务器帮助解析该
域名并将结果传给自己。
在获得最终域名与IP 地
址对应关系后,服务器将
结果传递给解析器。例如图 11-5 域名解析的两种方式 1
在图11 -5a中,当客户机需要解析域名www.nankai.edu.cn 时, 解析器首先向本地域名服务器A (tsinghua.edu.cn)提出请求。由于域名服务器在本地没有找到www. nankai. edu. cn与其IP 地址的映射关系,因此服务器A 请求服务器B
(edu.cn)帮助解析该域名。与此类似,服务器B 会请求服务器
C (nankai. edu. cn)帮助解析该域名。由于www. nankai. edu. cn域名由服务器C 管理,因此服务器C 会将该域名与其IP 地址的映射关系回送给服务器B 。之后,服务器B 将得到的结果传递给服务器A, 由服务器A 将说终结果通知客户机。
与递归解析方式不同,采用反复解析方式的解析器每次请求一个域名服务器,如果该域名服务给不出最终的答案,那么解析器再向其他的域名服务器发出请求,如图11 -5b所示。尽管解析器每次请求的域名服务器对能给不出最终的域名与IP 地址的对应关系,但是域名服务器应该给出下次解析器请求时可以使用的域名服务器的IP 地址(例如根域名服务器的IP 地址)。解析器经过多次反复请求,最终就可以得到请求域名与IP 地址的对应关系。在图ll-5b 显示的例子中,当客户机的解析器请求本地域名服务器A (tsinghua. edu. cn)解析www.nankai.edu.cn 时,由于服务器A

没有在本地找到该域
,名与IP 地址的对应关
系,因此它返回了一
个可能知道该映射关
系的域名服务器地址
(服务器B 的地
址)。于是,解析器
向服务器B (edu.cn)
再次发出请求。当服
务器B 返回域名服务
器C
(nankai.edu.cn)可图 11-5 域名解析的两种方式 2
能存有www. nankai. edu. cn与其IP 地址的对应关系后,解析器向域名服务器C 发出请求。由于www. nankai. edu. cn域名由服务器C 管理,因此服务器C 直接将结果传送给客户机的解析器。
图11-6描述了一个简单的域名解析过程。其中,构造的域名请求报文包含有需要解析的域名及希望使用何种方式解析域名。
