CSDN博客

img coolstar

Windows2000 DNS 技术指南 5

发表于2001/8/15 9:30:00  1223人阅读


第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

 

0 0

相关博文

我的热门文章

img
取 消
img