Windows2000 DNS 技术指南 5

王朝system·作者佚名  2006-01-08
宽屏版  字体: 小 | 中 | 大 | 超大  

第5章域名查询详述

本章内容包括:

• 迭代查询和递归查询。客户机可以使用两种查询:迭代查询和递归查询。这一节介绍它

们的差别。

• 发送D N S查询。这一节描述在D N S客户机和服务器之间所交互的信息。

• 有效时间。有效时间告诉客户机一个回答可以信任的时间,以决定有多长的时间可以缓

存此结果。

• 查询过程。整个查询过程是如何工作以满足D N S客户机的请求的。

5.1 迭代查询和递归查询

迭代查询和递归查询是可以发送到域名服务器的两种请求。递归查询是最常见的发送到

本地域名服务器的请求。当本地域名服务器接受了客户机的查询请求时,本地域名服务器将

力图代表客户机来找到答案,而在域名服务器执行所有工作的时候,客户机只是等待。如果

本地域名服务器不能直接回答,则它将在域名树中的各分支上下递归搜索来寻找答案。可见

第2章中一个n s l o o k u p跟踪的示例。

对于一个递归查询, D N S服务器将持续搜索直到收到回答。这种回答可以是主机的I P地

址,也可以回答“主机不存在”。不论是哪种结果,递归域名服务器将把结果返回给客户机。

一个域名服务器若设置为使用前向服务器,则它将发送递归查询到指定的前向主机。这

台收到前向查询的主机也将工作在递归模式以回答查询。如果本地服务器不是一个从属服务

器,过一会儿它可能会自行开始查询过程,尽管它仍然希望从它的前向主机处得到回答。如

果本地域名服务器设置为一个前向服务器的从属服务器,则工作方式会有所不同。客户机可

以发送递归查询到一台从属服务器,但从属服务器不能进行递归查询,它实质上将成为其前

向服务器的客户机等待回答。第3章曾对前向服务器和从属服务器进行了介绍。

迭代查询则有所不同。迭代查询的最好例子是一台本地域名服务器发送请求到根服务器。

当某个企业的本地域名服务器向根服务器提出查询,根服务器并不一定代表本地域名服务器

来担当起回答查询的责任。另一种说法是根服务器不接收递归查询。事实上,根服务器只是

为解析查询做一件事:指引本地域名服务器到另一台主机来查询回答。这种做法通常称为重

指引,也是期望得到的迭代查询的结果。例如,当根服务器被要求查询w w w. i s i . e d u的地址,

根服务器不会到I S I域名服务器查询w w w主机的地址,它只是给本地域名服务器返回一个提示,

告诉本地域名服务器到I S I域名服务器去继续查询和得到结果。

所以,对域名服务器的迭代查询只能得到一个提示,再继续查询。关于迭代查询和递归

查询的更多信息将在后续章节中讨论。

5.2 发送D N S查询

用户在试图访问网络上的资源时就开始了域名服务查询。用户准备访问的资源可以是同

一个本地网的另一台主机,也可能是位于地球的另一面。一般来说,用户或者在命令行键入

远地主机名,或者在应用程序如N e t s c a p e或Internet Explorer中输入,用户不用也不需要知道

拥有此名字的主机在什么位置。用这种方式输人的主机名必须转换为I P地址。然后,用户也

不用知道以下事实,即域名系统是如何做下列工作的。

取决于用户的本地主机的配置,这个主机名可以通过不同的方式来解析。解析主机名的

方法之一是查看本地主机的文件。但本地主机文件的信息并不会很全,因此D N S往往是首选

的方法。如果D N S已被选为解析远地主机名的方法,则本地主机将参考它的解析器库,以决

定一个缺省的域是否已选定、搜索的路径是否已配置、域名服务器的I P地址是什么等。在

Windows NT和2 0 0 0环境下,这些信息将在T C P/I P属性对话框的D N S选项卡中配置和显示,

如图5 - 1所示。(第1 4章讨论了这些值在客户机上的设置。)

图5-1 TCP/IP属性对话框的D N S选项卡

一旦这些信息被正确地输入,本地主机就可以使用D N S进行主机名解析。在获得了域名

服务器的I P地址后,本地主机就可以向域名服务器发出对远端主机I P地址的查询。发送给域

名服务器的I P分组的格式包含5段信息,如图5 - 2所示。

图5-2 发送给域名服务器的I P分组的内容

D N S消息(不论是查询还是回答)都包含一些特殊的信息位。I P分组中h e a d e r段总是存在的,

56第一部分理解域名系统

• 向域名服务器的提问

• 回答查询的RR

• 指向授权的RR

• 其他信息RR

其中包含了关于这个分组的信息,包括I P分组中有哪几段信息、这个分组是用来查询还是回

答、查询的类型(标准、反向、服务器状态等等)、回答是否授权。图5 - 3为h e a d e r段的格式。

图5-3 header段的格式

图5 - 2中的q u e s t i o n段包含3部分信息:被查询的域名、查询的类型以及查询的类别。其中

的域名实际上可以是主机名,但也和查询的类型有关。如果用户想通过We b浏览器连接到

w w w. i s i . e d u,则属于地址查询。此时这一段的名字部分应是主机名w w w. i s i . e d u,查询类型应

反映为地址或A记录的代码,类别则应反映为I n t e r n e t或I N类的代码。图5 - 4为分组的q u e s t i o n

段的格式。

图5-4 question段的格式

图5 - 2所示分组的其余3段:a n s w r e r段、a u t h o r i t y段和a d d i t i o n a l段的格式是一样的,各自

包括名字、类型、类别、T T L、长度(源数据长度)以及源数据等几部分。a n s w e r段的名字、类

型、类别部分应该和q u e s t i o n段相同。T T L部分表示收到的记录数据的有效时间,而R d a t a应

该是实际的回答。

若还是用以上的例子,名字部分应为w w w. i s i . e d u,R d a t a部分则是主机的I P地址。图5 - 5为

a n s w e r段、a u t h o r i t y段和a d d i t i o n a l段的格式,它们都是一样的。

现在,再回到整个的查询过程。客户机向本地域名服务器发出查询。为了更好地说明此

问题,假设所有的域区数据,包括服务器自身委托授权的已及更早就开始的没被授权的查询

的数据,都被载入内存并且当域名服务器开始工作时已经被“缓存”。这个域名服务器收到查

询请求后就开始查找。如果域名服务器在缓存中有相应的信息,而T T L时间还没有超过,则

域名服务器就直接向客户机提供信息。在这种情况下,回答返回并且响应的时间非常快。如

第5章域名查询详述57

果返回的答案是没有授权的,则h e a d e r段的A A标志不会被设置。

图5-5 answer段、a u t h o r i t y段和a d d i t i o n a l段的格式

如果在域名服务器的缓存中找不到回答,则本地域名服务器就将在域名树中向根部上溯,

向其他域名服务器查询,然后到另一个分支寻找回答。在这种情况下,当本地域名服务器最

终向客户机返回一个回答时, A A标志设置为1,以表示回答将来自一台授权服务器。客户机

得到回答后,就可和远端主机建立连接。

当客户机从域名服务器得到响应后,一般都会关心此响应是不是授权回答,也就是会关

心在连接被解析时是否会有问题,如果一个域的授权域名服务器给出了非授权的回答就会出

问题。这通常是有人对域区文件做了修改,

或者域区文件出现了其他错误。

以下两节和将详细地描述通过缓存取得

结果的过程。

5.2.1 缓存有答案

在客户机和域名服务器交互信息的过程

中,如果客户机所查询的结果就在域名服务

器的本地缓存中,则交互的过程如图5 - 6所

示。

图中用数字表示的交互顺序是:

1) 客户机发送查询到域名服务器。

2) 域名服务器检查它的本地缓存。

3) 如果域名服务器的本地缓存有相应的

58第一部分理解域名系统

图5-6 从域名服务器的本地缓存回答客户机的查询

客户机

服务器缓存

回答查询

name

type

class

回答,则域名服务器直接将答案返回给客户机。

5.2.2 缓存无答案

在客户机和域名服务器交互信息的过程中,如果客户机所查询的结果没有在域名服务器

的本地缓存中,则交互的过程如图5 - 7所示。

图5-7 从授权服务器回答客户机的查询

图中用数字表示的交互顺序是:

1 ) 客户机发送查询到域名服务器。

2) 域名服务器检查它的本地缓存。如果答案不在域名服务器的本地缓存,域名服务器必

须到其他地方寻找回答。

3) 域名服务器可以将查询发送到根服务器,并被根服务器指引到所查询域的授权服务器。

4 ) 一旦本地服务器从授权服务器得到答案,它就将答案保存在它的缓存中,并将答案提

供给客户机。

5.3 有效时间(T T L)

有效时间( T T L)相当于一个计时器,用来告诉域名服务器当它从授权服务器得到回答

后,此答案在多长时间内是有效的。如第7章“D N S知道什么”中将会讲到, T T L值可以对每

个记录设置,或者可以用一个域的S O A记录中的最小有效时间( M - T T L)作为每个记录的缺

省值。如果某个记录的T T L设置得与缺省的M - T T L值不同,以后各个记录的T T L将取这个值,

直到又明确设为最小T T L值。如果T T L的值等于0,则客户机就知道它不能缓存这个结果。

T T L的使用很简单。当本地域名服务器没有收到的查询所需的信息时,这个本地域名服

务器必须查询相关域的授权服务器来得到回答。一旦本地域名服务器获得了回答,就将结果

第5章域名查询详述59

客户机

回答查询

本地服务器缓存

缓存服务器

存入缓存以便其他本地主机查询同样信息时使用。T T L将决定本地域名服务器将这个结果在

缓存中保存多长时间。一旦T T L的值已超过,本地域名服务器就将相应信息从缓存中删除,

如果相应的查询又收到时,必须再次向授权服务器要求回答。如果T T L设置不为0,收到的结

果就存人缓存并用于非授权的回答。

5.4 查询过程

以下再回顾一下查询解析的整个过程。但这次是把它放在全局中看,而不是仅仅聚焦于

局部工作以及D N S服务器的行动和责任。

5.4.1 递归D N S查询

递归查询要求D N S服务器代表客户机承担全部的责任以检索一个授权回答。图5 - 8表示了

这种查询,此时客户机p c . a c l n e . c o m发布递归查询给D N S服务器a c m e . c o m。

在图5 - 8中,D N S服务器a c m e . c o m从客户机p c . a c m e . c o m接受了递归查询后,它本身对4个

其他D N S服务器来说就变成了一个迭代D N S客户机/解析器。

图5-8 递归查询与迭代查询都要解析一些客户机请求

当b i g c o m p a n y.com 的D N S服务器给出一个授权回答时, a c m e . c o m将它传递给

p c . a c m e . c o m,完成对查询的解析。直到客户机满意后,解析才算结束。如果因为某种原因一

个没被授权的回答被传递,解析过程就不会结束只到客户机满意为止。如果客户一直没有收

60第一部分理解域名系统

acme.com

DNS服务器

(转向ISP 首先使

用其缓存)

查询1

应答

pc.acme.com

DNS客户机

(解析器)

向其他DNS服务

器迭代查询

ns.myisp.com

(ISP)DNS服务器

bigcompany.com

DNS 服务器

com域DNS

服务器

根域DNS服

务器

根

应答

应答

应答

应答

查询2

查询5

查询4

查询3

开始递归查询请求送到

acme.com DNS服务器查

询host2.bigcompany.com

到授权回答,它也许再次向在它的配置中所包含的其他D N S服务器发出查询。

如果a c m e . c o m拒绝p c . a c m e . c o m的递归查询请求, p c . a c m e . c o m不得不自己完成所有的迭

代查询,轮流地访问每台D N S服务器,就像图5 - 8中的a c m e . c o m那样。客户机解析器发布递归

请求几乎总是独占式的,但也有被拒绝的时候。

客户机从一台D N S服务器得到的对递归查询的回答只能是成功或者失败。在得到这个回

答以前,客户机将一直等待。如果结果不是主机搜索到的授权I P地址,而只是一种提示或指

向另外的D N S服务器,客户机下一次就查询提示的地址,以得到授权的回答。

递归查询意味着D N S服务器要代表客户机处理查询直到请求被解析。D N S服务器使用自

己的解析器,不时变换服务器和客户机的角色,直到它自己或其他的服务器能提供授权的回

答。有意思的是,处理客户机的递归查询的D N S服务器经常向其他服务器提出迭代查询的请

求,根据它们所给出的结果,在D N S域名树中上下搜索直到有一个服务器能与查询的名字相

匹配,否则在遇到如超时或出错等结束条件时终止查询。

只有满足以下条件才能递归查询:

• 客户机要求递归查询。

• D N S服务器接受递归查询(多数如此,除了根服务器)。

• 客户机的服务器不能从它自己的缓存或数据库中给出回答。

如果客户机的服务器可以从它自己的缓存或数据库中给出回答,它就能立即给出有效的

回答,而不需要进一步查询。

多数解析器都首先进行递归查询。如果服务器拒绝递归查询,而它又不能从自己的缓存

或数据库中给出回答,客户机将再试用迭代查询。

5.4.2 迭代D N S查询

迭代查询能使服务器返回一个最佳的搜索点,或称搜索提示。迭代查询可能不会返回最

后的结果,而递归查询则可以给出结果。迭代查询可以返回部分结果,或者提示下一步到哪

里搜索。客户机(解析器)通过迭代查询逐步接近所需的回答,迭代地查询其他服务器直到得到

最后的回答,或者出错,或者是超时。迭代查询要求服务器的工作较少,而要求客户机的工

作较多。

再回到图5 - 8,其中第二次查询指向n s . m y i s p . c o m,返回的提示指向a c m e . c o m,即根域名

D N S服务器。然后,重复类似的过程,直到第五次指向b i g c o m p a n y. c o m的D N S服务器查询返

回所需的回答时结束。

如果第一台D N S服务器的迭代查询不能返回一个地址,它将告诉客户机下一次应该访问

哪台D N S服务器。一般地,下一次访问的最佳服务器将在域名树中上移,并更靠近D N S根域

名服务器,甚至就是根域名服务器。当查到根域名服务器后,一般只需再在域名树向下查询

若干次,就能得出最终的结果:或者是到达所需的服务器,以返回查询的地址;或者是出错

并终止查询。

5.4.3 反向D N S查询

反向查询完全是另一回事。递归查询和迭代查询都是正向查询,也就是从一个域名去查

询I P地址。而反向查询则刚好相反:它从客户机中收到I P地址,然后返回一个全域名( F Q D N )。

第5章域名查询详述61

为此,在域名空间中专门按照I P地址而不是域名创建了一个域,所有已注册的I P地址都组织

在a r p a域的i n - a d d r子域。

根据域名可以将主机划分到不同的域或子域,因此主机名是可重复的。而I n t e r n e t中没有

两个主机可以注册相同的I P地址,所以按照I P地址它们都可以成为同一个域的成员。在这种

方案中,一个唯一的I P地址代替了域名层次结构中的域名。在i n - a d d r. a r p a域中,主执

h o s t 2 . a c m e c o m p a n y. c o m将有一条如下形式的指针( P T R )记录:

对这个指针记录,在a c m e c o m p a n y. c o m子域中相应的地址记录将是:

在这个例子中,主机h o s t 2的I P地址存储在i n - a d d r. a r p a域中,并和其他的已注册的I n t e r n e t

主机地址一起排序。通过I P反向查询主机h o s t 2,查询的次数不需很多。只需在i n - a d d r. a r p a域

中查询它的反向排列的I P地址就可以返回主机h o s t 2的全域名,前提是所有已注册的主机在

i n - a d d r. a r p a域中都按I P地址而不是按域名排列。

5.4.4 正在进行的查询

当查询正在进行时,一个客户机乃至一台D N S服务器使用的查询类型对管理员比对用户

更重要。如果在查询和解析过程中遇到困难,可以试图改变缺省设置。客户机几乎总是试图

进行递归查询。Windows 2000 DNS服务器的缺省值是当到达一个前向服务器时,就试图进行

递归查询,而到达其他D N S服务器时便发出迭代查询。第11章讨论了对Windows 2000 DNS服

务器的设置,包括怎样设置迭代查询及如何只接受迭代查询。

如前所述,当查询正常工作时,整个过程对客户机来说是透明的,以下是一个跟踪反向

域名查询的样本,它以p i n g命令开始:

可以注意到“Quesrion Name”是反向的I P地址;2 0 . 4 0 . 2 5 . 1 9 8 . i n - a r p a,它是P T R类型的。

62第一部分理解域名系统

它将I P地址发送给D N S服务器,询问与I P地址相对应的主机名。可以看到,所有的工作

对客户端来总都是透明的。记住如果D N S服务器的记录和缓存中并没有该主机的信息, D N S

服务器实际自己主动向另外的服务器查询,找到的回答正是客户机需要的和最终看到的。在

这种情况下,表面之下进行的工作其实是非常复杂的。在这里被递归查询的与I P地址相对应

的主机名是一个在W I N S上注册的N e t B I O S名。所以,执行解析的D N S服务器必须支持W I N S -

R记录(见第4章)。于是, D N S服务器不是转向W I N S或在它的i n - a d d r. a r p a授权中查找而是对该

I P地址执行了“适配器状态( adapter status)”。关键是无论递归查询引发了多少工作以及何种

工作,对于客户端来说都是一样的。

5.5 小结

本章描述了标准的D N S查询是如何进行的。查询的过程在本书的其他地方也有描述,如

第2章和第3章,但不如本章完整。

第5章域名查询详述63

 
 
 
免责声明:本文为网络用户发布,其观点仅代表作者个人观点,与本站无关,本站仅提供信息存储服务。文中陈述内容未经本站证实,其真实性、完整性、及时性本站不作任何保证或承诺,请读者仅作参考,并请自行核实相关内容。
© 2005- 王朝网络 版权所有