DNS学习(三)---DNS查询原理

    额,DNS原理的东西我想都比较清楚了。但是根据配置的不同,却有不同的查询方式,在51cto上发现了很好的文章,所以转过来了。

    原文地址:http://book.51cto.com/art/200801/64743.htm

当DNS客户端需要查询所使用的名称时,它会查询DNS服务器来解析该名称。客户端发送的查询消息包括以下3条信息:

指定的DNS域名,必须为完全合格的域名(FQDN);
指定的查询类型,可根据类型指定资源记录,或者指定为查询操作的专门类型;
DNS域名的指定类别。

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

此外,客户端本身也可尝试联系其他的DNS服务器来解析名称。然后根据来自DNS服务器的参考答案,使用其他的独立查询,该过程称作迭代。

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

名称查询从客户端计算机开始,并传送给本机的DNS客户服务程序进行解析;
如果不能在本机解析查询,可根据设定的查询DNS服务器来解析名称。
以上两种查询方式的具体工作过程如下。

1.本地解析

当客户端提出解析请求时,首先将请求传送至DNS客户服务,以便使用本地缓存信息进行解析。如果可以解析所要查询的名称,则DNS客户服务应答该查询,该请求处理过程结束。本地DNS服务客户解析过程如图6-2所示。

 

DNS学习(三)---DNS查询原理_第1张图片
图6-2  本地DNS服务客户解析过程

本地解析程序的缓存包括两种名称信息:

本地配置的主机文件,该文件是主机名称到地址的映射信息,在DNS客户服务启动时预先加载到缓存中;
从以前的DNS查询应答的响应中获取的资源记录,它被保留在缓存中一段时间。

如果此查询与本机的缓存中的项目不匹配,则解析过程将继续进行,客户端将查询DNS服务器来解析名称。

2.查询DNS服务器

当客户端请求无法在本地解析时,将请求发送至DNS服务器。DNS服务器接收到查询请求时,首先检查它能否在服务器的本地配置区域中获取资源记录信息做出应答,其原理如图6-3所示。

如果查询的名称与本地区域信息中的相应资源记录匹配,则使用该信息来解析查询的名称,服务器做出应答,则此次查询完成。

 

图6-3  查询DNS服务器原理图

 

如果区域信息中没有查询的名称,则服务器检查它能否通过来自先前查询的本地缓存信息来解析该名称。如果从中发现了匹配的信息,则服务器使用该信息应答查询,此次查询完成。

如果无论从缓存还是从区域信息,查询的名称在首选服务器中都未发现匹配的应答,那么查询过程可继续进行,使用递归来完全解析名称。递归查询的工作过程如下。

如图6-4所示,如要递归查询certer.example.com的地址,首选DNS服务器通过分析完全合格的域名,向顶层域com查询,而com的DNS服务器与example.com服务器联系以获得更进一步的地址。这样循环查询直到获得所需要的结果,并一级级向上返回查询结果,最终完成查询工作。

 

图6-4  递归查询流程

 

需要注意的是,为了让DNS服务可以正确运行递归查询,需要有一些必要的信息,该信息通常是以根目录的形式来提供,借助使用根目录提示寻找根域服务器,DNS服务器可以完成递归查询。

如果客户端申请使用递归过程,但在DNS服务器上禁用递归或查询DNS服务器时客户端没有申请使用递归,则使用迭代的方式查询。迭代查询的工作过程如下。

如图6-5所示,如要迭代查询user.certer.example.com的地址,首先DNS服务器在本地查询不到客户端请求的信息时,就会以DNS客户端的身份向其他配置的DNS服务器继续进行查询,以便解析该名称。在大多数情况下,可能会将搜索一直扩展到Internet上的根域服务器,但根域服务器并不会对该请求进行完整的应答,它只会返回example.com服务器的IP地址,这时DNS服务就根据该信息向example.com服务器查询,由example.com服务器完成对user.certer.example.com域名的解析后,再将结果返回DNS服务器。

图6-5  迭代查询流程
   对于大多数的迭代查询而言,如果它的主DNS不能解析该名称,那么客户端会使用本地配置的DNS服务器列表,在整个DNS名称空间中联系其他名称服务器。

你可能感兴趣的:(职场,dns,休闲,查询原理)