查询哪个进程在发送DNS请求
DNS 查询的工作原理
7(共 15)对本文的评价是有帮助 - 评价此主题
更新时间: 2005年1月
应用到: Windows Server 2003, Windows Server 2003 R2, Windows Server 2003 with SP1, Windows Server 2003 with SP2
DNS 查询的工作原理
当 DNS 客户端需要查询程序中使用的名称时,它会查询 DNS 服务器来解析该名称。 客户端发送的每条查询消息都包括三条信息,指定服务器回答的问题:
指定的 DNS 域名,规定为完全合格的域名 (FQDN)
指定的查询类型,可根据类型指定资源记录,...全部
DNS 查询的工作原理
7(共 15)对本文的评价是有帮助 - 评价此主题
更新时间: 2005年1月
应用到: Windows Server 2003, Windows Server 2003 R2, Windows Server 2003 with SP1, Windows Server 2003 with SP2
DNS 查询的工作原理
当 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 服务器来解析名称。
下面将更加详细地解释这两个过程。
第 1 部分:本地解析程序
下图显示了完整的 DNS 查询进程的概况。
DNS 查询的工作方式
如查询过程的初始步骤所示,DNS 域名由本机的程序使用。
该请求随后传输至 DNS 客户端服务,以便使用本地缓存信息进行解析。如果可以解析查询的名称,则应答该查询,该进程完成。
本地解析程序的缓存可包括从两个可能的来源获取的名称信息:
如果在本地配置主机文件,则来自该文件的任何主机名称到地址的映射,在 DNS 客户端服务启动时将预先加载到缓存中。
从以前的 DNS 查询应答的响应中获取的资源记录,将被添加至缓存并保留一段时间。
如果此查询与缓存中的项目不匹配,则解析过程继续进行,客户端查询 DNS 服务器来解析名称。
第 2 部分:查询 DNS 服务器
如前面的图中所示,客户端将查询首选 DNS 服务器。
在此进程的初始客户端/服务器查询部分中使用的实际服务器选自全局列表。有关如何编译和更新该全局列表的详细信息,请参阅客户端功能。
当 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 服务重新启动时这一信息将被清除。
可选的查询响应。收起