域名系统(D N S)是一种用于T C P / I P应用程序的分布式数据库,它提供主机名字和 I P地
址之间的转换及有关电子邮件的选路信息。这里提到的分布式是指在 I n t e r n e t上的单个站点不
能拥有所有的信息。每个站点(如大学中的系、校园、公司或公司中的部门)保留它自己的
信息数据库,并运行一个服务器程序供 I n t e r n e t上的其他系统(客户程序)查询。 D N S提供了
允许服务器和客户程序相互通信的协议。
从应用的角度上看,对 D N S的访问是通过一个地址解析器( r e s o l v e r)来完成的。在U n i x
主机中,该解析器主要是通过两个库函数 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地址来寻找主机名字。解析器通过一个或多个名字服务器来完成这种相互转换。
图4 - 2中指出了解析器通常是应用程序的一部分。解析器并不像 T C P / I P协议那样是操作系
统的内核。该图指出的另一个基本概念就是:在一个应用程序请求 T C P打开一个连接或使用
U D P发送一个数据报之前。心须将一个主机名转换为一个 I P地址。操作系统内核中的 T C P / I P
协议族对于D N S一点都不知道。
RFC 1034 [Mockapetris 1987a] 说明了D N S的概念和功能,RFC 1035 [Mockapetris 1987b]
详细说明了DNS 的规范和实现。D N S最常用的版本(包括解析器和名字服务器)是 B I N D —
伯克利I n t e r n e t域名服务器。该服务器称作 n a m e d。[ D a n z i g、O b r a c z k a和Kumar 1992]分析了
DNS 在广域网中产生的通信量。
14.2 DNS 基础
D N S的名字空间和U n i x的文件系统相似,也具有层次结构。这种层次的组织形式
每个结点(图1 4 - 1中的圆圈)有一个至多 6 3个字符长的标识。这颗树的树根是没有任何
标识的特殊结点。命名标识中一律不区分大写和小写。命名树上任何一个结点的域名就是将
从该结点到最高层的域名串连起来,中间使用一个点“.”分隔这些域名(注意这和 U n i x文件
系统路径的形成不同,文件路径是由树根依次向下的形成的)。域名树中的每个结点必须有一
个唯一的域名,但域名树中的不同结点可使用相同的标识。
以点“.”结尾的域名称为绝对域名或完全合格的域名 F Q D N(Full Qualified Domain
N 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中定义的国家代码,这些域被称为国家域,或地理
域。