DNS 查询的工作原理

类别:软件工程 点击:0 评论:0 推荐:

ns 查询的工作原理
当 dns 客户机需要查询程序中使用的名称时,它会查询 dns 服务器来解析该名称。客户机发送的每条查询消息都包括三条信息,以指定服务器应回答的问题:

指定的 dns 域名,表示为完全合格的域名 (FQDN)
指定的查询类型,它可根据类型指定资源记录,或作为查询*作的专门类型。
dns 域名的指定类别。
对于 Windows dns 服务器,它始终应指定为 Internet (IN) 类别。

例如,指定的名称可为计算机的 FQDN,如 host-a.example.microsoft.com,并且指定的查询类型用于通过该名称搜索地址 (A) 资源记录。将 dns 查询当作客户机向服务器提出的两部分问题,如“对于名为 hostname.example.microsoft.com 的计算机,您有没有 A 资源记录?”当客户机从服务器接收应答时,它读取并解释应答的 A 资源记录,以了解它通过名称提问的计算机的 IP 地址。

dns 查询以各种不同的方式进行解析。客户机有时也可通过使用从以前查询获得的缓存信息就地应答查询。dns 服务器可使用其自身的资源记录信息缓存来应答查询。dns 服务器也可代表请求客户机来查询或联系其他 dns 服务器,以完全解析该名称,并随后将应答返回至客户机。这个过程称为递归。

另外,客户机自己也可尝试联系其他的 dns 服务器来解析名称。如果客户机这么做,它会使用基于服务器应答的独立和附加的查询。该过程称作迭代。

总之,dns 查询过程按两部分进行:

名称查询从客户机开始并传送至解析程序(dns 客户服务)进行解析。
不能就地解析查询时,可根据需要查询 dns 服务器来解析名称。
下面的部分详细解释这两个过程:

第一部分:本地解析程序
下图显示了完整的 dns 查询过程的概况。


放大图形
 
如查询过程的初始步骤所示,dns 域名由本机的程序使用。该请求随后传送至 dns 客户服务,以通过使用就地缓存的信息进行解析。如果可以解析查询的名称,则查询将被应答并且此过程完成。

本地解析程序的缓存可包括从两个可能的来源获取的名称信息:

如果主机文件就地配置,则来自该文件的任何主机名称到地址的映射在 dns 客户服务启动时预先加载到缓存中。
从以前的 dns 查询应答的响应中获取的资源记录将被添加至缓存并保留一段时间。
如果此查询不匹配缓存中的项目,则解析过程继续进行,客户机查询 dns 服务器来解析名称。

第一部分:查询 dns 服务器
如前面的图中所示,客户机将查询首选 dns 服务器。在此过程的初始客户/服务器查询部分中使用的实际服务器从全局列表中选择。有关 Windows 2000 如何汇编和更新全局列表的详细信息,请参阅客户机功能。

当 dns 服务器接收到查询时,首先检查它能否根据在服务器的就地配置区域中获取的资源记录信息作出权威性的应答。如果查询的名称与本地区域信息中的相应资源记录匹配,则服务器作出权威性的应答,并且使用该信息来解析查询的名称。

如果查询的名称没有区域信息,则服务器检查它能否通过本地缓存的先前查询信息来解析名称。如果从中发现匹配的信息,则服务器使用它应答查询。接着,如果首选服务器可使用来自其缓存的肯定匹配响应来应答发出请求的客户机,则此次查询完成。

如果查询名称在首选服务器中未发现来自缓存或区域信息的匹配应答,则查询过程可继续进行,使用递归来完全解析名称。包括来自其他 dns 服务器的支持,以帮助解析名称。在默认情况下,dns 客户服务要求服务器在返回应答前使用递归过程来代表客户机完全解析名称。在大多数情况下,dns 服务器的默认配置支持递归过程,如下图所示。


放大图形
 
为了使 dns 服务器正确执行递归过程,首先需要在 dns 域名空间内有关于其他 dns 服务器的一些有用的联系信息。该信息以根线索的形式提供,它是初步资源记录的一个列表,该记录可被 dns 服务用来定位对 dns 域名空间树的根具有绝对控制权的其他 dns 服务器。根服务器对于 dns 域名空间树中的根域和顶级域具有绝对控制权。详细信息,请参阅更新根提示。

dns 服务器可通过使用根线索搜索根服务器,来完成递归过程。理论上,该过程允许任何 dns 服务器定位那些对域名空间树中在任何级别使用的任何其他 dns 域名具有绝对控制权的服务器。

例如,当客户机查询单个 dns 服务器时,考虑使用递归过程来定位名称 host-b.example.microsoft.com。此过程在 dns 服务器和客户机首次启动并且没有可帮助解析名称查询的当地缓存信息时进行。它假定由客户机查询的名称用于服务器根据其配置的区域不了解的域名。

首先,首选服务器分析全名并确定对于顶级域“com”具有绝对控制权的服务器的位置。随后,对“com”dns 服务器使用迭代查询,以获取“microsoft.com”服务器的参考信息。随后,参考性应答从“microsoft.com”服务器传送到“example.microsoft.com”的 dns 服务器。

最后,与服务器 example.microsoft.com 联系上。因为该服务器包括作为其配置区域一部分的查询名称,所以它向启动递归的源服务器作出权威性地应答。当源服务器接收到表明已获得对请求查询的权威性应答的响应时,它将此应答转发给发出请求的客户机,这样递归查询过程就完成了。

尽管执行上述递归查询过程可能需要占用大量资源,但对于 dns 服务器来说它仍然具有一些性能上的优势。例如,在递归过程中,执行递归查询的 dns 服务器可获得有关 dns 域名称空间的信息。该信息由服务器缓存起来并可再次使用,以提高使用此信息或与之匹配的后续查询的应答速度。随着时间的推移,这些缓存信息会不断增加并占据大量的服务器内存资源,不过在 dns 服务关闭或它的一个工作周期结束时这些信息将被清除。

候选的查询响应
以前对 dns 查询的讨论都假定此过程在结束时会向客户机返回一个肯定的响应。但实际上,查询也可返回其他应答。最常见的应答有:

权威性应答
肯定应答
参考性应答
否定应答
权威性应答是返回至客户机并随 dns 消息中设置的“授权机构”位一同发送的肯定应答,“授权机构”位表明根据查询名称此应答是从带直接授权机构的服务器获取的。

肯定应答可由查询的 RR 或 RR 列表(也称作 RRset)组成,它与查询的 dns 域名和查询消息中指定的记录类型相符。

参考性应答包括查询中名称或类型未指定的其他资源记录。如果不支持递归过程,则这类应答返回至客户机。这些记录的作用是为提供一些有用的参考性答案,客户机可使用这种应答继续进行递归查询。

参考性应答包含其他的数据,例如不属于查询类型的资源记录 (RR)。例如,如果查询主机名称为“www”并且在这个区域未找到该名称的 A RR,而是找到了“www”的 CNAME RR,则 dns 服务器在响应客户机时可包含该信息。

如果客户机能够使用迭代过程,则它可使用这些参考信息为自己进行其他查询,以求完全解析此名称。详细信息,请参阅迭代的工作原理。

来自服务器的否定应答可以表明:当服务器试图彻底而且权威性地处理查询以及采用递归方式分析查询时将遇到两种可能的结果之一:

权威性服务器报告:dns 名称空间没有查询的名称。
权威性服务器报告:查询的名称存在,但该名称不存在指定类型的记录。
解析程序以肯定或否定响应的形式将查询结果传回请求程序并把响应消息缓存起来。

注意

如果查询的最终应答太长而不能在一个 UDP 数据包中发送和解析,则 dns 服务器可能会进行故障转移,将响应发到 TCP 端口 53,从而在 TCP 连接会话中完全应答客户机。
当 dns 客户机被限制根据特定 dns 服务器(如内部网上的 dns 服务器)解析名称时,系统通常会禁止在 dns 服务器上使用递归。当 dns 服务器不能解析外部 dns 名称时递归可能也会被禁用,而且客户机可能要故障转移到另一个 dns 服务器以解析这些名称。

对于 Windows 2000 Server,您可根据需要禁止 dns 服务器使用递归过程,方法是在相应服务器上的 dns 控制台中配置“高级”属性。详细信息,请参阅在 dns 服务器上禁用递归过程。

默认情况下,在执行递归查询并联系其他 dns 服务器时,Windows 2000 dns 服务器使用几个默认的时间设置。它们是:
3 秒的递归重试间隔。这是 dns 服务在递归查询期间再试查询之前等候的时间长度。
15 秒的递归超时间隔。这是 dns 服务在重试的递归查询失败之前要等候的时间长度。
在大多数情况下,这些参数不需要进行调整。但是,如果您在慢速广域网链路上使用递归查询,则您或许可通过对设置略作调整来提高服务器的性能以及加快查询的完成。详细信息,请参阅调整高级服务器参数。

迭代的工作原理
迭代是在以下条件生效时 dns 客户机和服务器之间使用的名称解析类型:

客户机申请使用递归过程,但递归在 dns 服务器上被禁用。
查询 dns 服务器时客户机不申请使用递归过程。
来自客户机的迭代请求告知 dns 服务器:客户机希望直接从 dns 服务器那里得到最好的应答,而不需联系其他 dns 服务器。

使用迭代时,dns 服务器根据它对名称空间的特定认识来应答客户机,而这个名称空间正与目前查询的名称数据有关。例如,如果您内部网上的 dns 服务器接收到来自本地客户机“www.microsoft.com”的查询,则它可能会返回来自其名称缓存的应答。如果查询的名称当前未存储在服务器的名称缓存中,则服务器可能会通过提供一些参考信息对客户机作出响应,这些参考信息就是是接近客户机所查询名称的其他 dns 服务器的 NS 和 A 资源记录列表。

得到参考信息后,dns 客户机负责向其他配置的 dns 服务器继续进行递归查询,以解析名称。例如,在大多数情况下,dns 客户机可能会将其搜索扩展到 Internet 上的根域服务器,以定位对于“com”域具有绝对控制权的 dns 服务器。一旦联系上 Internet 根服务器,它就会从指向“microsoft.com”域的实际 Internet dns 服务器的这些 dns 服务器中获得进一步的递归响应。当客户机收到这些 dns 服务器的记录时,它可以向 Internet 上的外部 Microsoft dns 服务器发送其他迭代查询,这个 dns 服务器可通过肯定和权威性的应答进行响应。

使用迭代时,除了向客户机提供自己最好的应答外,dns 服务器还可在名称查询解析中提供进一步的帮助。对于大部分迭代查询,如果它的主 dns 不能辩识该查询,则客户机使用它在本地配置的 dns 服务器列表在整个 dns 名称空间中联系其他名称服务器。

缓存的工作原理
dns 服务器采用递归或迭代来处理客户机查询时,它们将发现并获得已存储的有关 dns 名称空间的重要信息。然后这些信息由服务器缓存。

缓存为流行名称的后续查询提供了加速 dns 解析性能的方法,同时充分减少了网络上与 dns 相关的查询通信量。

当 dns 服务器代表客户机进行递归查询时,会暂时缓存资源记录 (RR)。缓存的 RR 包含从 dns 服务器获得的信息,对于在进行迭代查询以搜索和充分应答代表客户机所执行的递归查询过程中所获知的 dns 域名,此信息具有绝对的权威性。稍后,当其他客户机发出新的查询,申请与缓存的 RR 匹配的 RR 信息时,dns 服务器可以使用缓存的 RR 信息来应答它们。

当信息缓存时,生存时间 (TTL) 值适用于所有缓存的 RR。只要缓存 RR 的 TTL 没有到期,在通过与这些 RR 相匹配的客户机来应答查询时,dns 服务器就可继续缓存并再次使用 RR。在大部分区域配置中由 RR 所使用的缓存 TTL 值被分配了“最小的(默认)TTL”,它被设置用于区域的启动授权机构 (SOA) 资源记录。在默认情况下,最小的 TTL 为 3600 秒(1 小时),但是可进行调整,或者根据需要在每个 RR 上分别设置缓存 TTL。

注意

您可以将 Windows 2000 dns 服务器安装成缓存专用服务器(没有任何配置的区域)。详细信息,请参阅使用只缓存的服务器。
在默认情况下,Windows 2000 dns 服务器使用根线索文件 Cache.dns,该文件存储在服务器计算机的 %SystemRoot%\System32\dns 文件夹中。当服务启动时,该文件的内容预先加载到服务器存储区,并包含运行 dns 服务器所在的 dns 名称空间的根服务器的指针信息。有关该文件或如何使用该文件的详细信息,请参阅与 dns 相关的文件。

 

本文地址:http://com.8s8s.com/it/it34820.htm