在实际应用中DNS查询主要分为两种方式查询:1.递归查询;2.迭代查询

一般情况下:为了减少资源的消耗,网络中客户端与所属的本地DNS服务器查询方式通常为递归查询,本地DNS服务器与外部的公共DNS服务器间的查询方式为迭代查询。

1. 什么递归查询

如下所示为DNS递归查询的过程:

域名解析服务之DNS查询类型_第1张图片

查询过程如下:

Step A:客户端向本地DNS服务器查询某个域名解析(这里以"example.microsoft.com"为例);

Step B:本地DNS服务器先查找缓存查询不到,然后查找本地区域文件还是找不到,则通过根提示文件向负责.com顶级域的根名称DNS服务器查询;

Step C:根DNS服务器收到请求后直接将下属的.com的权威DNS服务器IP地址返回给本地DNS服务器;

Step D:本地DNS服务器收到根域名服务器发出的DNS信息后直接向.com的权威DNS服务器查询;

Step E:.com权威名称服务器收到客户端DNS查询请求后,发现无此域名的解析就直接将下一级的二级权威名称服务器的DNS的IP(这里指microsoft.com的权威名称服务器的IP)发给本地DNS服务器;

Step F:本地DNS收到.com发出的microsoft.com权威DNS服务器后,直接向microsoft.com权威DNS发出解析请求;

Step G:microsoft.com权威DNS收到解析请求后,发现是自己负责的域名,并且存在该主机记录,然后将对应的ip信息发给本地DNS,本地DNS缓存该解析,并响应客户端查询,至此整个查询过程结束;

总结:递归查询是一种DNS 服务器的查询模式,在该模式下DNS 服务器接收到客户机请求,必须使用一个准确的查询结果回复客户机。如果DNS 服务器本地没有存储查询DNS 信息,那么该服务器会询问其他服务器,并将返回的查询结果提交给客户机。

2. 什么迭代查询

如下所示为DNS迭代查询的过程:

域名解析服务之DNS查询类型_第2张图片

查询过程如下:

Step A:客户端向本地DNS服务器查询某个域名解析(这里以"example.microsoft.com"为例)

Step B:本地DNS服务器先查找本地缓存,如果找不到,则直接将本地DNS的根名称域名(13台根域名服务器随机选择一台)信息发给客户端;

Step C:客户端根据本地DNS服务器发出的DNS报文直接查询根域名服务器;

Step D:根域名服务器查询自己的DNS区域文件,然后将负责.com域名解析的权威DNS告诉客户端,客户端再次查询负责.com解析的DNS服务器;

Step E:.com权威名称服务器收到客户端DNS查询请求后,发现无此域名的解析就直接将下一级的二级权威名称服务器的DNS的IP(这里指microsoft.com的权威名称服务器的IP)发给DNS客户端;

Step F:客户端直接查询microsoft.com的权威名称DNS,microsoft.com权威名称服务器收到DNS查询后发现为自己负责的域名解析,并且存在该域名的A记录,直接反馈给DNS客户端,至此整个查询过程结束;

总结:DNS 服务器另外一种查询方式为迭代查询,这种查询方式下DNS 服务器会向DNS客户端提供其他能够解析查询请求的DNS服务器地址,当客户机发送查询请求时,DNS 服务器并不直接回复查询结果,而是告诉客户机另一台DNS 服务器地址,客户机再向这台DNS 服务器提交请求,依次循环直到返回查询的结果为止。