Windows2000 DNS 技术指南 2
Windows2000 DNS 技术指南 2
第2章DNS如何工作
本章将描述D N S服务器如何工作,如何协同工作以及如何响应域名查询。本章包括以下
内容:
• 主机和域名的层次结构。在该节将看到域名空间像一棵树,即所有互相关联的计算机名
所组成的一种层次结构。也将解释子域如何将名字空间划分为可管理的单位,而委托授
权则可使一个D N S服务器在需要时查询其他服务器。
• 域和域区( z o n e )。域和D N S服务器之间的关系是可以变化的,不一定总是每个域一个服
务器。D N S服务器将使用域区文件来精确地确定它们将管理哪些域和主机。域区给了
D N S管理员足够的灵活性使得一个D N S服务器可以处理一个或多个域、一个或多个域的
一部分或者是这两种情况的组合。这一节将介绍DNS 管理核心的域区数据。注意:一
些服务器不使用域区文件来存储域区信息,辅服务器可能只在内存中有拷贝,而
Windows 服务器可以在活动目录中存储域区信息。
• 解析客户机的请求。当一个客户机发出名字查询后将会发生什么?本节将通过一个例子
详细说明客户机查询解析的过程,还将解释D N S服务器可以使用的递归查询和迭代查
询。所举的例子将显示一个查询可以上溯到根服务器,然后再回到另一个分支以满足客
户机的请求。
• 工具纵览。该节介绍可以帮助解决D N S问题的基本工具,包括信息采集、疑难解答和其
他工具。该节提供了一个帮助理解和运用D N S的小工具箱。
D N S是存储网络主机和域名并进行交互的场所。此时,将每个主机名当作一个符号地址,
因为使用主机名比数字地址更方便,也更容易记忆。
D N S客户机的特性多数体现在应用网络层。例如,通过U R L名可迅速地在浏览器中打开
任何地方的w e b页面。传输层则在网络中传送D N S信息。D N S客户机和服务器在端口5 3使用
无连接的U D P协议来查询和做出响应,还在端口5 3使用T C P协议进行服务器到服务器的连接。
D N S客户机和服务器间使用无连接U D P协议的原因是很简单的。用U D P协议传输报文不需要
建立连接,如果客户机没有接收到所需的信息,解析器就会不停的重发直到它接收到一个响
应(在本章后面的“解析客户机请求”中将会描述),对于服务器到服务器的连接,只有基于
连接的协议,比如说T C P协议能够使用,因为这些服务器必须传送经常被复制的重要的资源
记录(Resource Record)和序列信息,没有这些信息,服务器便不能和其他服务器保持同步
而且也不能提供可靠的服务。
2.1 主机和域名的层次结构
当I n t e r n e t(原来称为A R PA n e t)规模还很小时,一个单独的统一的h o s t . t x t主机文件在网
络中发布,就可完成主机的查找。而当I n t e r n e t的规模越来越大时,这种发布主机文件的查找
方法就不适用了。域名系统D N S的结构就逐渐形成,以代替原来的以文件为基础的主机查找。
D N S实现了一种分布式数据模型,形成了一种文件系统树,如图2 - 1所示。从体系结构上来说,
域名系统D N S是一种分布式的、层次型的、客户机/服务器式的数据库管理系统。
图2-1 DNS树,类似于文件系统,每层都有唯一的名字
这种树型模型是分布式的,因为每个注册的域都将自己的数据库列表提供给整个系统,
如图2 - 2所示。
图2-2 DNS域名树层次从根域名开始
层次结构的最高端是域名树的根(通常用点号“ .”表示),提供根域名服务。根域名服务
器具有指向第一层域的初始指针,也就是顶层域,如. c o m、. o rg、. m i l和. e d u。另外,还有两
百多个表示地理位置的顶层域名。这个列表仍在发展。顶层域名最初由I n t e r n e t授权地址分配
组I A N A管理。后来,一些顶层域名被授权给一些组织,例如I n t e r n e t信息中心I n t e r N I C来管理。
14计计第一部分理解域名系统
不允许
允许
根(无名)
I n t e r N I C管理其他的顶层域名. c o m、. o rg、. a c t和. e d u。因为八十年代和九十年代众多的注册而
使得它发展很快,并且不断变化。在附录C“顶层I n t e r n e t域名”中尽量地列出了这些顶层域
名。
在域名层次结构中,主机可以存在于根以下的各层上。因为域名树是层次型的而不是平
面型的,因此只要求主机名在每一个分支中必须是唯一的。例如,在一个公司中可以有若干
个主机名为w w w的w e b服务器,前提是每台服务器必须在域名层次的不同分支上。如w w w.
xyz. com、w w w. corp. com和w w w. eng.com都是有效的主机名,也就是说,即使这些主机有相
同的名字,也都可以被正确地解析到唯一的主机。这种原则对于F T P节点、w e b节点、域名服
务器等等都是适用的,即只要是在不同的子域,就可以重名。
根D N S服务器就像世界各地的公司和学校使用的服务器,但它存在于I n t e r n e t中最特殊的
地方,也就是甚至在第一层域名如. c o m和. o rg等之上。表2 - 1中给出了域名层次结构中的若干
层。
记忆D N S层次的最容易的方法是记住根域仅仅只用“ .”表示。顶层域只含有一个名字,
第二层域则含有两个名字,如此等等。
根域名服务器和其他机构、团体的域名服务器的主要区别是根服务器包含指向所有已注
册的顶层域的指针。
第二层域是属于机构团体或地区的,用域名的最后一部分即域后缀来分类。例如,域名
m i c r o s o f t . c o m代表微软公司。多数域后缀可以反映使用这个域名的机构是什么性质的。
表2-1 域名层次结构
域名层次结构中的位置
. 根是唯一没有名字的域,用一个句点表示
. n e t TLD 或顶层域名
e x a m p l e . n e t SLD 或第二层域名
test.example.net 子域名,机构中一个部门的域名
注意实际上,和根域相比,第一层域实际是第二层域,但它们还是称为顶层域或
T L D(Top Level Domain)。根域从技术的含义上是一个域,但常常不被当作是一个
域。根域所有的很少几个根级成员只是为了支持域名树和它的功能。
但机构的类型并不总是可以很容易地通过域后缀来确定。例如,对于. n e t域和. o rg域就不
像. c o m域那样清晰。本来, . n e t域是打算为I S P ( I n t e r n e t服务提供商)和其他联网机构所用的,
但很多研究机构或课题组也用这个域,如h a n d l e . n e t和g i g a . n e t等。
. o rg域原来是为非赢利或政府资助的研究组织所使用的,但它也被一些政府机关如高性能
计算中心( High Performance Computing Center:h p c . o rg)、集成技术办公室( I n t e g r a t i o n
Technology Office : ito.org)等所使用。
2.1.1 子域
一个域如果在另一个域之下,就应该说是一个子域,即使是顶层域也是根域的子域。由
于在第二层域以下的子域的变化特别多,而大量的子域也是在第二层域以下,因此,子域这
个词就往往用来指第二层域以下的各个域。
第2章DNS如何工作计计15
各机构、团体往往根据内部的需要来设立子域。如E a s t . i s i . e d u是i s i . e d u的子域,是为I S I的
东海岸分部所设立的。各公司往往按照公司内部的结构来设立子域。在图2 - 3所示的子域就分
别对应于工程部、市场部、销售部和人力资源部。采用这种方式设立子域,可使负载分布到
公司内部网络的若干主机,从而改善如邮件服务、名字服务等各种服务的性能。子域结构的
划分完全由自己决定。划分的原则应该是使网络上的流量最小并满足需求。因为同样的原因,
在Windows 2000中使用类似于域控制器放置的结构是很常见的。如果想按逻辑局域网的边界
划分域,从而使广域网上的流量最小,则应考虑至少在各局域网内放置一个缓存名字服务器。
域和子域从纯逻辑的角度来说,所有在根域以下的域都可称为子域,因为它们确实
都在根域之下。但这样使用术语的对象太广,也不适于区分上层域和非上层域。通
常,管理员称第二层以下的域为子域,也就是那些具有3个或多于3个用“.”分开的
名字的域为子域。这样就便于将相对比较固定的上层域和第三层、第四层,甚至更
低层加以区别。
从更实际的角度来看,根域、顶层域和第二层域为的域名树的上层固定组成,
而子域是指第二层以下的各个域。
2.1.2 委托授权
以上这种子域的划分,可以引出在域内父域和子域的若干服务器之间分布工作负载的一
种正式方法:委托授权。主服务器也被称作授权服务器,或在D N S里称作S O A。一个授权服
务器具有不可推辞的责任回答向它提出的所有查询请求。但它也可以将一部分授权委托给其
他的服务器。授权服务器可以包含所有有关域的数据,也可将一部分数据委托给其他服务器。
每个顶层域实际是根域的一个部分,而每个顶层域又可进一步地划分成第二层域名。委
托授权是根域服务器用来和其他域名服务器分享责任的一种方法,其结果是将查找所有
I n t e r n e t主机名的授权分配到许多服务器来承担。通过这种分布的方法,形成了D N S的一个关
键概念。这样单个服务器的失效不会造成系统失效,根服务器相当于有了多个,大多数情况
下顶层域和子域也是如此。
如果一个D N S服务器不能回答一个查询请求,则它会自动地指示客户机到另一个已授权
分担一部分子域记录的服务器去查询。子域经常是由授权委托的服务器来处理的。授权服务
器决定了对某个域名应该查询哪个服务器,也就决定了如果需要的话下一步应该查询的服务
器。如果授权服务器不包含所查询名字的有关数据,委托授权就将决定下一步应该查询的服
务器。委托授权将把所有授权的服务器在域中宣布,但实际上,多数查询只需再转向一个服
务器。如果客户机(解析器)收到的回答是主机或域不存在,则客户机会立刻停止查找。解析器
不会再指向任何其他的委托授权服务器,而不论它以前已访问过多少域名服务器。
委托授权将使查询从位于D N S根部的根服务器向下指向顶层D N S服务器。子域DNS 服
务器将通过域名服务器记录向父域服务器注册,就如同一个机构向I n t e r N I C ( I n t e r n e t网络信息
中心)注册其第二层域名和D N S服务器从顶层域获得授权。如前所述,第二层域下可以有多个
授权。
委托授权可以是同级的,也可以是向下一级的。同级委托授权将确定同一层的其他服务
器来共享域的授权,而向下一级的委托授权将确定子域(见附录C )。任何用户所使用的D N S服
务器都可能被顶层D N S服务器委托授权为它的一个子域。
16计计第一部分理解域名系统
通过域名服务器记录( N S记录)给一个域名服务器以委托授权(第4章将描述N S记录和它们
的使用)。N S记录可以给出域中所有授权服务器的列表。为了配置一个机构的子域,就必须将
授权从父域委托到子域,否则,这些子域就不能被外界的任何主机所解析。
对一个D N S客户机来说,好像所有已注册的主机地址都在它本地的D N S服务器上。但这
仅仅是表面的感觉。委托授权告诉本地的D N S服务器如何找到非本地的主机,这样才能使客
户机解析它们所在域以外的地址。
2.2 域和域区
理解域和域区的差别需要费一点精力。D N S域名树的分支是为域名所用的,而叶子则用
于主机。在域名树中,子域和主机是树中所有在它们上层的域的成员。
域区在逻辑上覆盖了D N S树型结构的一部分,以确定每个D N S服务器支持的名字(子域名
和主机名)。D N S服务器的域区决定了它所覆盖的树的分支、树的区域,以及有多少它所授权
的域。
图2 - 3中有一个服务器的授权域区包括m k t和s a l e s两个域。一个D N S服务器也可以在一个
域区中只有一个域。图2 - 3中的e n g就是一个域区只有一个域的例子,尽管它还有两个子域。
因为Windows 2000中的域区用于控制相邻的分支,也就要求m k t和s a l e s域位于不同的域区中,
这与一般的域区规则稍有不同。
由于D N S服务器之间的交互操作和D N S服务器及D N S客户机之间的交互操作决定了必须
有域区和委托授权,域区规定了名字是在哪里存放的(即哪个D N S服务器具有这些名字),而委
托授权则决定客户机和服务器应从哪条路径与其他D N S服务器通信。
一个域区包含的记录可以是单个域的记录、一个域记录的一部分、一个或几个子域的记
录或者是父域和子域记录的组合。对于一类特殊的用来进行从地址到名字解析的反向地址域
区,更是常有多个域的记录。反向地址域区将在第4章中描述。
图2-3 域区决定了D N S服务器所管理的域名
域区向D N S服务器提供了它所管理的名字,而委托授权则告诉D N S服务器当一个查询是
在其域区以外时到哪里去查找。域区和委托授权都不决定哪个D N S服务器是域记录授权的最
初来源,哪些服务器只是备份。需指定一个服务器为主服务器并给予它这种授权,并指定一
第2章DNS如何工作计计17
个服务器为辅服务器以作为主服务器的备份。
2.2.1 主D N S服务器
如前所述,主D N S服务器(即S O A )负责域中名字的授权,关于那个域的名字的所有信息都
要从这个服务器获得。当一个主D N S服务器启动时,它从它所运行主机的本地数据文件(或
者活动目录)中取得域区数据。一个D N S服务器可以同时是一个或几个域的主服务器,也可
以同时既是一个域的主服务器,又是另一个域的辅服务器。第3章将更详细地解释D N S服务器
的类型。但现在至少应认识到域和域区不存在主或辅的问题,只有D N S服务器才有主或辅的
概念,主D N S服务器才是一个域的名字的授权来源。
如果要配置一个机构的域的层次结构,最好首先为整个域配置一个主域名服务器。D N S
服务器管理的域区应包含所有的域名,也许还应为子域配置一个或几个服务器。如果要为机
构的各个部门建立子域,则每个子域应有一个主D N S服务器。如果服务器不包含这个域的所
有记录,则必须指定一个子域授权(例如, e x a m p l e . n e t 被分为s a l e s . e x a m p l e . n e t ,
o p s . e x a m p l e . n e t,e n g . e x a m p l e . n e t等等)。
通过子域的选择提高了用户的灵活性。同时,因为每个子域都有一个授权的启动,所以
潜在地增加了负载。因此,每次做出改变时,必须进入指定的主服务器。M S关于“域区”项
的使用有时是令人费解的。在实现时应注意使用方式。
2.2.2 辅D N S服务器
辅D N S服务器从主服务器获得数据。当一个辅D N S服务器启动时,它首先从主服务器处
获得域区数据,并将自己的版本号和主服务器的版本号进行比较。如果觉得必要,辅服务器
就进行域区数据的替换,用主服务器的数据覆盖原来的数据。辅服务器能和主服务器通信是
因为辅服务器的名字连同S O A和N S资源记录一起保存在它的文件里。辅服务器仅用一个N S记
录来表示,并且它不承担S O A的责任,只有主服务器才有权承担。当然,如果辅服务器仍然
没有域区数据,它需要在它的启动文件建立时使用指示来定位主服务器以获得域区数据。
和主D N S服务器相似,辅服务器也是授权查找域名的地方。其差别在于主服务器是其他
需要输入域区文件的服务器的初始域名来源,而辅服务器则不是传递域区数据的来源。辅服
务器的存在只是为了备份并提供查询服务。
2.2.3 从主D N S服务器向辅D N S服务器传送数据
对域、域区、委托授权有所了解后,可以转向讨论D N S的分布式数据库模型。域区文件
本质上是D N S名字的数据库列表,主服务器拥有它自己的各个域的源域区文件。
子域域名服务器可以有主服务器的功能,可有效地将一个大的域名列表划分为几个较小
的部分,成为几个域区文件。如果一个大型机构在建立其域名服务器时只使用一个域,而没
有划分为几个子域,则域区文件将非常大。这样一个很大的无层次名字空间还会有另一个问
题:一个不再划分的D N S分支不能支持两个同样的主机名。如果不对域进行划分,一个大机
关就会遇到像A R PA n e t决定建立D N S体系结构时所曾遇到的问题。然而,同样大的机构可以
把它的域名空间分成几个子域,但仍然只用一个域区文件,如图2 - 3所示。这只能解决两个问
题中的一个。
18计计第一部分理解域名系统
对域进行划分可以因域区文件变小并容易管理而改善性能。一个域名服务器不应该解析
庞大的域区文件。虽然还受其他因素影响,但一般来说域区文件越小,从域名服务器得到的
响应就越快。但子域也会带来一定的问题,即数据问题。委托授权解决了父域和子域的协调,
但一个辅服务器又如何从数据源—它的主服务器—来获得数据?回答是通过传送主服务器
的域区文件。这也被称作域区传送( zone transfer)。域区传送可以是部分的也可以是完全的,
主要取决于需求和最近一次全传送耗费的时间。把大的域区文件分成几个小文件也可提高域
区传送的效率。这也是为什么要避免大而平面化的域名空间的重要原因之一。
当一个主服务器启动时,它只需要对名字查询请求做出响应。当一个辅服务器启动时,
它就要查看主服务器的授权数据,并得到一个路径和文件名,以便当收到副本时保存为本地
的备份。这由服务器的启动信息提供,在第4章中将会提到。如果辅服务器是第一次启动或者
有人清除了它的数据目录,则辅服务器就向主服务器发出请求以得到域区文件的副本。
域区传送操作很像Windows (NT或2 0 0 0 )的文件复制,或者是Windows 在域名服务器之
间的W I N S数据复制。当辅服务器得到了主服务器域区文件的副本后,它也能对名字查询提供
授权的应答。如果主服务器的域区文件有所改变或更新,辅服务器将如何处理?在授权开始资
源记录(SOA RR)中包含的若干信息字段可指示辅服务器相隔多久检查主服务器的变化,这
些字段设置了超期时限和刷新频率。S O A资源记录也有一个版本号或序列号。关于S O A资源
记录的更多信息,请见第4章。
辅服务器将定期地向主服务器查询它所需刷新的域区文件,具体的就是检查序列号是否
有变化,序列号是一种递增的指示数据库版本的数字。如果序列号有所变化,辅服务器就知
道域区数据有了变化,就会启动新的副本传递(可能是部分的,也可能是完全的传送)。部分
传送是在RFC 1995中定义的一种逐渐递增的传送,即仅是被改变的部分而不是整个域区文件
被传送。
只有当序列号增大后辅服务器才会进行域区文件传送。如果序列号因为某种原因而减少,
则辅服务器将认为它的域区文件副本是最新的,并将继续使用直到期满。如果因某种原因序
列号变为0,则辅服务器的本地域区文件将被删除,辅服务器就将启动一次传输,从主服务器
传送完整的新的域区数据文件。但是无论在哪种情况下,都是从它的主服务器获得它的数据。
Windows 2000 DNS服务器和BIND 8.0还有一种“通告”选项,以启动辅服务器的更新。
这就是说,主服务器可以通知辅服务器数据已变化,以便加速传送新信息。“通告”选项还可
以提高安全性,因为是由主服务器启动域区文件的传送。主服务器的管理员提供了应通知的
辅服务器列表,而列表中的辅服务器只限于那些已经授权的服务器。将启动数据传送从辅服
务器转为主服务器,有助于防止域区文件被非法窃走。这是一系列使用“通告”选项来提高
传送效率的令人信服的原因。然而,一些BIND 8.1.1服务器在从Windows 2000 DNS接收到这
样的传送时会丢弃自己的所有数据。所以,当计划用这种方式使用B I N D辅服务器时,应采用
BIND 8.1.2。
希望D N S查询在全局范围内都能得到迅速处理的机构应该在不同的地理位置上配置D N S
服务器,也许可以把部分域区数据放在其他合作机构的服务器上。这样可以提供较好的本地
查询性能,而配置的冗余有助于在I n t e r n e t连接不正常时继续工作。
在有故障时,即使目的主机不能接通,辅D N S服务器仍然可以进行名字解析。对于如发
送邮件这样的服务,这是很有用的,因为如果在发送邮件时可以解析主机名,但不能启动一
第2章DNS如何工作计计19
次邮件发送过程,则只需将邮件在发送队列中继续排队,稍后再发送。而发送邮件时如果连
主机名都不能解析,则只能退回邮件并给出“主机未知”错误。
Windows 2000 把域区数据集成到活动目录中作为第三类域区,从而逐渐模糊了标准主辅
服务器之间的区别。集成后,仍然可以有标准辅服务器,但也可能有多个同等的使用活动目
录进行复制的辅服务器。这在第7章中将会提到,那里将讨论一些有关活动目录技术的D N S问
题。
本章关于域名空间和域名服务器的讨论就到这里。其余部分将集中于客户机。客户机的
查询和D N S服务器是如何协作工作的。
2.3 解析客户机请求
当客户机要和远端系统通信,如一个用户用鼠标单击对一个We b节点的链接,则在实际
和远端系统开始通信前,还有一系列的步骤需要完成。第一步就是要解析远端系统名为I P地
址。客户机就是解析器。为解析远端系统名,客户机向它的一个D N S服务器发出查询,至少
需要在客户机配置中指定一个D N S服务器。可在D N S网络控制面板的T C P / I P属性窗口中看到
一个客户机的D N S服务器搜索顺序,如图2 - 4所示。在第1 4章将给出在不同的Wi n d o w s客户机
间定位搜索顺序的指针。
图2-4 一个Wi n d o w s 9 5 / 9 8客户机对D N S的T C P / I P属性
在图2 - 5中,可以看到列出了一个或几个D N S服务器的I P地址,指示客户机到哪里查找未
解析名字的地址。客户机将首先查询列表中的第一个域名服务器。如果解析器在指定的时间
内没有收到确认,它将查询列表中的下一个服务器,直到有一个域名服务器接受了查询。
当一个域名服务器接受了客户机的查询,客户机通常等待,而域名服务器就在域区文件
查找所查询的主机名的I P地址,或从其他D N S服务器得到与接收到的查询相匹配的主机名。
如果第一个D N S服务器接受了查询请求但不能解析主机名,它就返回“域名错误”以表明所
查的域名不存在。当这种情况出现时,客户机将不再向第二个D N S服务器发出查询。
如果主机名中还包含主机的域名, D N S服务器使用这个附加信息来加速其搜索,甚至可能
将查询直接提交给另一个D N S服务器,或者告诉客户机另一个D N S服务器的地址去查询(记住
全域名,见第1章)。如果没有指定域名,则D N S服务器将认为是在自己的域区文件中查询。
20计计第一部分理解域名系统
图2-5 Windows 2000 客户机的高级D N S配置
2.3.1 客户机请求解析的过程
下面是一个详细的例子,以帮助读者理解域名解析的过程。这个例子说明了D N S是如何
工作的,读者应仔细地阅读此例子,以便领会每一步的作用。
回顾以前关于全域名和根域的讨论,一个末尾带有句点“ .”的主机名应该是全域名,就
是说,在名字中所有应该有的域的成分都齐全了。如果客户机要解析的主机名末尾带有“.”,
则它的D N S服务器将对域的成分不做进一步的假设,而是在开始解析时就直接将主机名送到
根域服务器,从那里可在D N S树中沿一条最短的路径达到所查主机的授权服务器。如果域名
只是相对域名,即没有末尾的句点,则D N S服务器将为重构造主机的全域名做出一系列智能
的假定。
由于解析器库函数所用的不同源代码,解析器的工作会有所不同。许多标准解析器根据
从应用程序收到的输入,用几个步骤就可以完成解析。例如,要查询主机名w w w,则按照缺
省设置,加上客户机的域名。如果查询的主机名是w w w. i s i . e d u,则解析器将直接解析
w w w. i s i . e d u。如果服务器不能找到w w w. i s i . e d u,则加上客户机的域名,并再次继续查询。
不同之处在于一些解析器区分全域名和主机名是通过查看整个字符串,如果是形如
w w w. e x a m p l e . n e t的便认为是全域名,形如w w w的则认为仅仅是一个本地主机名。
例如,假设客户机所在的域是c n r i . r e s t o n . v a . u s,它要访问w w w. i s i . e d u的We b节点。如果所
查找的名字不是全域名,服务器将试图构造全域名。因为这个客户机开始查询的D N S服务器
是在c n r i . r e s t o n . v a . u s域,并且没有使用全域名,则D N S服务器使用的初始搜索串就是:
注意,此D N S服务器已将自己的域名c n r i . r e s t o n . v a . u s加到了被查找主机名的后面。除非
查找名后面有“.”, D N S服务器将认为这个名字不是全域名。只有尾部的句点“.”才能确
认全域名。另外,可认为w w w. i s i . e d u和w w w都是相对域名,它们可能在当前域中得到解析,
也可能在当前域不能解析。如果名字尾部没有“.”,名字的相对性就可以由解析器设定,而
它通常都留给D N S服务器来设定。通过在c n r i . r e s t o n . v a . u s域中的初次搜索,域名服务器不能
第2章DNS如何工作计计21
解析它收到的组合主机名。这表明重构查找主机的全域名没有成功,下一次查询时, D N S服
务器就必须在高一层域中查找。所以,第二次查找的名字应为:
注意,第一次查询时的“ c n r i”部分现在已经消失。如果这个完成客户机搜索的D N S服
器对r e s t o n . v a . u s域来说不是主D N S服务器,则它将把查询转送给另一个服务器进行解析,但
如果这个服务器就是主服务器,而第二次搜索又失败了,则它将假定在更高一层域可能解析,
于是将从当前的搜索名中再删去一个部分,再进行第三次查找。
如果第三次查找还是没成功,在这种情况下的第四次查找会有些不同。因为实际上没有
u s域( u s由根域处理),第四次查询实际就要到根域服务器以查询w w w. i s i . e d u。但D N S服务器
不会从根域服务器得到对w w w. i s i . e d u的解析,而是将被指向一个i s i.e d u域的授权服务器。
然后,D N S服务器就将对w w w. i s i . e d u的查询送到i s i.e d u域名服务器。
因为w w w. i s i . e d u是i s i . e d u域的一个有效主机,这个i s i . e d u域的域名服务器就会用
w w w. i s i . e d u的I P地址来进行响应。本地的D N S服务器就将结果送回给客户机,以便客户机用
收到的I P地址连接We b服务器并We b页面。在下一节还将介绍主机- I P地址查询的更详细
的过程。
以上就是D N S服务器递归查询的一个实例,也可设置为叠代查询或非递归查询。实际上,
叠代查询就像D N S服务器查询根域服务器。而根域服务器并不是直接为客户机进行查询,而
是提供一个最佳猜测,指示从哪里可以得到更多的信息。
D N S服务器可以工作在递归查询方式或叠代查询方式。在递归方式, D N S服务器成为客
户机的代理,并根据需要和其他的D N S服务器通信,以得到结果,而客户机只是等待。递归
查询时,一个D N S服务器本身将变成解析器,或者说是变成其他的D N S服务器的D N S客户机。
Windows 2000 DNS 服务器的缺省方式是从客户机接收递归查询并向除了它的前向服务器
(f o r w a r d e r s)以外的其他D N S服务器发出叠代查询。
当工作在叠代方式时, D N S服务器只是提供一个它所能授权的最佳猜测,通常这种回答
只是指向另一个D N S服务器,以便解析器可以继续查询。这个解析器可以就是原来的客户机,
也可以是另一个D N S服务器。这种查询的重新指向将逐步地使查询接近最后的目标。叠代查
询使得D N S服务器不必一直为查询而工作,因为客户机本身将按D N S提供的线索不断进行查
询。
注意解析器的工作方式可以是互不相同的,这取决于解析器的设计和在网络控制面
板中的设置。这一章的例子将显示解析器工作的一般过程。有许多因素会影响解析
器所用的方法,但很少会影响最后的结果。
例如,有些解析器认为如果一个域名的内部含有句点“.”,则它就是全域名,
然后将它不做任何改变就送给一个D N S服务器。而有些解析器则假设如果主机名末
尾没有句点,则一定不是全域名,客户机就把自己的域名加到主机名的后面,再送
到一个D N S服务器。这两种假设都可能不对。幸运的是,客户解析器和D N S服务器
的结合可以成功地解析大多数的域名。
2.3.2 主机-I P地址查询实例
在下述例子中用到的程序n s l o o k u p将在2 . 4节中描述。在第1 2章中则有更加详细的介绍。
22计计第一部分理解域名系统
程序清单2 - 1是从工具软件n s l o o k u p得到的主机- I P地址查询的详细输出。查询的主机是
w w w. i s i . e d u,主域名服务器是c n r i . r e s t o n . v a . u s。此例显示了在解析过程中客户机和服务器之
间进行了何种通信。图2 - 6则是程序清单2 - 1的图解。
图2-6 按委托授权在D N S树中查询的实例
程序清单2-1 递归查询实例(由n s l o o k u p输出)
第2章DNS如何工作计计23
根DNS服务器的域
区包括.us和.edu
在cnri 的客户机
在cnri 的
服务器
在此例中, c n r i的D N S服务
器代表其客户机进行递归查
询。其它D N S服务器进行迭
代的工作,返回最佳猜想指
示c n r i的D N S服务器依次查
询其它服务器
事件的顺序:
1) cnri的客户机向cnri.va.us的DNS服务器查询www.isi.edu
2) cnri的DNS服务器查询DNS服务器reston.va.us
3) 根据提示,cnri的DNS服务器查询DNS服务器va.us
4) 根据提示,cnri的DNS服务器查询根服务器,即us和edu的主服务器
5) 根据提示,cnri的DNS服务器查询DNS服务器isi.edu
6) DNS服务器isi.edu返回www.isi.edu的地址
7) cnri的DNS服务器返回www.isi.edu的地址给客户机
24计计第一部分理解域名系统
第2章DNS如何工作计计25
从程序清单2 - 1和图2 - 6可以切实地看到域名服务器在查询时如何一直上溯到根域,以及如
何再向下进入另一个分支。还可以看到一件有趣的事:域名服务器V E N E R A . I S I . E D U出现在
几个位置。在v a . u s层的查询指向了V E N E R A . I S 1 . E D U。V E N E R A . I S I . E D U是v a . u s域的若干域
名服务器之一。此外,还可以从根域缓存文件看到,服务器V E N E R A . I S I . E D U也是原来的根
域服务器之一。由I S I维护的这个根服务器现在称为b . r o o t . s e r v e r. n e t。
2.4 工具纵览
与D N S各个方面相联系的工具有许多。这些工具使理解什么将继续和什么将产生错误变
得简单。理解这些工具的基本工作原理能让我们更好的使用它们。本节所讲的内容包括: d i g,
i p c o n f i g,n e t l a b,n s l o o k u p,p i n g,t r a c e r o u t e ( t r a c e r t ),n e t s t a t和n b t s t a t。本节只是这些工具
的概述。在第1 2章能获得更多的信息。这些工具的具体用法如下所述:
• d i g—dig 是一个更好的n s l o o k u p。它能获取更多的信息并且比n s l o o k u p容易使用。D i g
也用解析器来对分布式的D N S数据库执行查询。d i g也提供了一些选项,用来提高命令
行的灵活性。
• i p c o n f i g—i p c o n f i g显示了在系统中进行网络配置时的信息。它包括: I P、D N S服务器,
路由信息,子网掩码以及更多。i p c o n f i g能重新设置或释放所有的适配器或指定的适配
器,也能输出数据到指定的文件。微软公司在Windows 2000中对i p c o n f i g增加了一些附
加特性。其中有两项与客户机解析器缓存有关的是:
a) /displaydns—如果解析器缓存不为空,就显示它的内容。
b) /flushdns—清除缓存,当系统崩溃或信息有所改变而想重新载入时,这个命令是很有
用的。
• n e t l a b—这个工具是一个自由软件,它由一系列工具组成,这些工具能很容易地通过
一个图形界面来操作。它能很容易地在追踪网络问题的工具和提供更多网络环境信息的
工具间切换。N e t l a b把这些工具集成在一个软件中以便使用。这些工具包括: f i n g e r,
w h o i s,t i m e,q u o t e,p i n g,t r a c e,D N S,s c a n n e r和能工作在u s e r @ h o s t和h o s t模式下的
i n f o . f i n g e r。在u s e r @ h o s t模式下它将返回某主机上指定用户的信息;在h o s t模式下它将
返回登录在主机上的用户; w h o i s返回从w h o i s数据库得到的关于指定域的信息,能够向
不同类型的w h o i s服务器查询向前的或向后的信息; t i m e由两部分组成, d a y t i m e,它用
可读模式打印出远程服务器所在地的日期和时间, clock synchronization,它使得本机时
钟与指定时钟同步; q u o t e与一个q u o t e - o f - t h e - d a y服务器相连接,这是一些服务者提供
的一种很有意思的服务; p i n g执行前面讲到过的p i n g命令, p i n g部分有一个G U I使得能
更好地控制p i n g命令;t r a c e是一个类似于p i n g但能执行t r a c e r t s的工具; D N S执行基本的
n s l o o k u p s;s c a n n e r执行网络扫描和特征控制,比如端口扫描等; i n f o给出栈的版本和系
统名称的信息。
• n s l o o k u p—n s l o o k u p工具对不同的服务器执行D N S查询。n s l o o k u p被执行时,它将查询
26计计第一部分理解域名系统
缺省的服务器,除非一个不同的服务器被指定。在两种基本模式下可能调用n s l o o k u p:
交互式和非交互式模式。在交互式模式下,可以执行很多查询和设置很多控制n s l o o k u p
工具如何向数据库查询的选项。n s l o o k u p使用它自己的解析器执行查询。
• p i n g—p i n g是一个使用I n t e r n e t控制消息协议( I C M P)的工具。p i n g发送一个I C M P
E C H O - R E Q U E S T到一个作为参数传送的地址, p i n g有一些控制其行为的选项。p i n g基
本上用来检查网络上一台机器是否可达。
• t r a c e r t—t r a c e r t (有时也叫t r a c e r o u t e )是一个发送U D P报文给指定地址的工具。通常,
由三个报文组成的分组被发出。每个分组获得比他前一个分组多一的有效时间( T T L)。
有效时间参数用来确定一个报文是否可达。如果一个报文被标记为不可达的,一个
I C M P超时信息会被返回给源主机。这使得能够跟踪报文传送过程所经过的路由器,在
目的地址到达后,t r a c e r t停止发送报文设置。
• n e t s t a t—n e t s t a t显示协议统计表和打开T C P / I P网络连接,有很多选项可以控制n e t s t a t
的显示。可以用n e t s t a t /?来获得所有的选项。
• n b t s t a t—n b t s t a t显示用于T C P / I P之上的N e t BI O S( N e t B T )的统计表。它也提供了很多的
选项,用n b t s t a t /?可获得所有的选项。
2.5 小结
本章初步介绍了D N S是如何工作的。下面几章将解释D N S服务器的类型、它们的目的、
各种服务器类型如何协同工作,以及关于D N S域区文件的详细信息。第8章将重新讨论客户
机名字解析,并详细解释递归查询和迭代查询。
第2章DNS如何工作计计27