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

这篇文章主要讲解了“迭代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 = (某个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查询的区别是什么这一问题有了更深刻的体会,具体使用情况还需要大家实践验证。这里是创新互联,小编将为大家推送更多相关知识点的文章,欢迎关注!


文章名称:迭代DNS查询和递归DNS查询的区别是什么
分享网址:http://ybzwz.com/article/poopjp.html