温馨提示×

温馨提示×

您好,登录后才能下订单哦!

密码登录×
登录注册×
其他方式登录
点击 登录注册 即表示同意《亿速云用户服务条款》

迭代DNS查询和递归DNS查询的区别是什么

发布时间:2021-06-29 11:34:12 来源:亿速云 阅读:900 作者:chen 栏目:编程语言

这篇文章主要讲解了“迭代DNS查询和递归DNS查询的区别是什么”,文中的讲解内容简单清晰,易于学习与理解,下面请大家跟着小编的思路慢慢深入,一起来研究和学习“迭代DNS查询和递归DNS查询的区别是什么”吧!

1 DNS查询有哪些不同类型?

DNS查询可以根据请求被处理的方式进行分类。通常查询可以分为以下几类:

  1. 递归查询。

  2. 迭代查询或非递归查询。

  3. 反向查询。

1.1 什么是递归查询?

在递归查询中,接收客户端请求的DNS服务器将完成全部的工作,然后返回结果。在工作过程中,DNS服务器可能代表客户端,向internet上的其他DNS服务器查询,以获得答案。

让我们通过以下步骤了解递归查询的整个过程。

假设你想浏览www.example.com网站,并且/etc/resolve.conf文件包含以下条目:

[root@myvm ~]# cat /etc/resolv.conf
nameserver 172.16.200.30
nameserver 172.16.200.31

这份resolve conf文件表是DNS服务器是172.16.200.30和172.16.200.31。无论你使用什么应用程序,操作系统都将向这两个DNS服务器发送查询请求。

步骤1:你在浏览器中输入www.example.com。操作系统向DNS服务器172.16.200.30发送请求,查询A记录。

步骤2:DNS服务器172.16.200.30在接收到查询后,检查本地缓存表,查找域名www.example.com的IP地址(A记录),没有找到。

步骤3:因为DNS服务器172.16.200.30上没有查询到信息,这个DNS服务器发送请求到一台根服务器查询答案。这里的一个重要事实在于,根服务器只支持迭代查询。

相关:DNS根服务器及其位置

步骤4:DNS根服务器返回一组DNS服务器地址,这些服务器负责处理.com顶级域名。

步骤5:我们的DNS服务器172.16.200.30将从根服务器返回的列表中选择一个顶级域名服务器继续查询www.example.com的IP地址。

步骤6:与根服务器类似,顶级域名服务器的也是迭代的。它返回给172.16.200.30另一组DNS服务器地址列表。这些DNS服务器(权威authoritative域名服务器)负责查询域名www.example.com。

相关:DNS区域文件及其内容

步骤7:现在我们的DNS服务器将从权威域名服务器列表中选择一个IP,向其查询www.example.com的A记录。权威域名服务器查询后,回复如下的A记录:

www.example.com = <XXX:XX:XX:XX>(某个IP地址)

步骤8:DNS服务器172.16.200.30把IP、域名对(以及其他可用资源)返回给我们。现在浏览器将向给定的IP发送请求,获取网页www.example.com。

下面图表可能会使概念更清楚。 递归DNS查询 如上图所示,DNS服务器172.16.200.30代表我们向其他DNS服务器进行查询。

注:上面解释的递归查询场景之所以会发生,是因为我们的DNS服务器172.16.200.30被配置为递归DNS服务器。你也可以禁用DNS服务器的递归查询功能。

1.2 递归查询时如何选择要查询的下一个DNS服务器?

在上面的例子中你已经看到,DNS服务器172.16.200.30需要多次从一个服务器列表中选择一个服务器进行查询。

例如有13台根服务器(我们常说一共有13台根服务器。13是全部服务器地址的数量。实际上在世界各地一共有数百台服务器。这13个根服务器地址是anycaste地址),要从那个根服务器查询信息呢?

相关:什么是IP Anycast,它是如何工作的?

几乎所有的DNS服务器都使用某种算法从列表中进行选择,以便以便分配负载,降低响应时间。

最著名的DNS服务器软件BIND使用一种称为RTT度量(Round Trip Time metric)的技术。使用这种技术,服务器跟踪每个根服务器的往返时间,并选择RTT较低的那个。

2 什么是迭代查询或非递归查询?

在开始解释迭代查询之前,需要注意的一点是,所有DNS服务器都必须支持迭代(非递归)查询。

在迭代查询中,名字服务器不会去获取完整的答案,而是返回其他可能直到答案的DNS服务器地址。在前面的示例中,DNS服务器172.16.200.30代表我们取查询信息,并为我们提供最终结果。

但是如果我们的DNS服务器不是递归的(这意味着它是迭代的),如果答案在它的记录中,它会告诉我们答案。否则它会告诉我们根服务器的地址(它本身不会查询根服务器或其他服务器)。

现在,操作系统中解析程序的任务是查询根服务器、.COM顶级域名服务器和权威名字服务器,以获得答案。

让我们来看看所涉及的步骤。

步骤1:你在浏览器中输入www.example.com。操作系统的解析程序向DNS服务器172.16.200.30发送请求,查询A记录。

步骤2: DNS服务器172.16.200.30在接收到查询后,查看缓存表,查找www.example.com的IP地址(A记录)。但没有找到。

步骤3:现在,我们的DNS服务器不再查询根服务器,而是把根服务器列表返回给我们。操作系统的解析程序将查询根服务器,寻求答案。

接下来的步骤同上文一样。迭代查询的唯一区别是:

  • 如果DNS服务器没有答案,它将不会向其他服务器查询答案,而是返回DNS根服务器的地址。

  • 如果DNS服务器有答案,它将返回答案(这在迭代查询和递归查询中是一样的)。

  • 在迭代查询中,从其他DNS服务器中查询答案的任务由操作系统的解析程序完成。

迭代DNS查询 从上图可以清楚地看出,在迭代查询中,DNS服务器不会为你向其他服务器查询答案(但如果已经有答案,则会告诉你答案)。但是会告诉你的解析程序其他DNS服务器的地址(在我们的例子中是根服务器地址)。

感谢各位的阅读,以上就是“迭代DNS查询和递归DNS查询的区别是什么”的内容了,经过本文的学习后,相信大家对迭代DNS查询和递归DNS查询的区别是什么这一问题有了更深刻的体会,具体使用情况还需要大家实践验证。这里是亿速云,小编将为大家推送更多相关知识点的文章,欢迎关注!

向AI问一下细节

免责声明:本站发布的内容(图片、视频和文字)以原创、转载和分享为主,文章观点不代表本网站立场,如果涉及侵权请联系站长邮箱:is@yisu.com进行举报,并提供相关证据,一经查实,将立刻删除涉嫌侵权内容。

AI