迭代和递归dns查询之间的区别
DNS是最关键的基础架构,可供所有人使用。
实际上,我们可以说这是一个单点故障,它可能会破坏万维网。
在本文中,我们将介绍客户端用于从DNS服务器获取不同类型信息的不同类型的查询。
可以根据处理完整请求的方式对DNS查询进行分类。
通常,查询可以分类如下。
- 递归查询
- 迭代查询或者非递归查询
- 逆查询
什么是递归查询?
递归查询是一种查询,其中接收我们查询的DNS服务器将完成所有工作,以获取答案并将其还给我们。
在此过程中,DNS服务器可能还会代表我们查询Internet中的其他DNS服务器,以获取答案。
让我们通过以下步骤了解递归查询的整个过程。
假设我们要浏览www.example.com,并且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和31.
无论我们使用什么应用程序,操作系统都会向这两个DNS服务器发送DNS查询。
步骤1:在浏览器中输入www.example.com。
因此,操作系统的解析器会将针对A记录的DNS查询发送到DNS服务器172.16.200.30。
步骤2:DNS服务器172.16.200.30收到查询后,将通过其表(缓存)查找域名www.example.com的IP地址(A记录)。
但是它没有条目。
步骤3:由于DNS服务器172.16.200.30无法提供查询答案,因此该服务器将查询发送给DNS根服务器之一以获取答案。
现在要注意的一个重要事实是,根服务器始终是迭代服务器。
相关:DNS根服务器及其位置
步骤4:dns根服务器将以负责处理.COM gTLD的服务器列表(引荐)答复。
步骤5:我们的DNS服务器172.16.200.30将从根服务器给出的列表中选择一台.COM gTLD服务器,以查询“ www.example.com”的答案
步骤6:与根服务器类似,gTLD服务器本质上也是迭代的,因此它会向我们的DNS服务器172.16.200.30回复负责该域的DNS服务器的IP地址列表(该域的权威名称服务器) )www.example.com。
相关:DNS区域文件及其内容
步骤7:这一次我们的DNS服务器还将从给定的权威名称服务器列表中选择一个IP,并在A记录中查询www.example.com。
查询到的权威名称服务器,将使用以下A记录进行回复。
www.example.com = <XXX:XX:XX:XX>(某些IP地址)
步骤8:我们的DNS服务器172.16.200.30将以ip域对(以及任何其他可用的资源)回复我们。
现在,浏览器会将请求发送到给定的ip,以获取网页www.example.com。
在迭代查询中,查询的DNS服务器将永远不会为我们获取答案(但是如果已经有了答案,它将为我们提供答案)。
但是会为解析器提供对其他DNS服务器(在本例中为根服务器)的引荐。