帮助中心

DNS递归解析和迭代解析的区别

时间 : 2019-10-30编辑 : DNS智能解析专家
分享 : 

DNS解析流程分为递归查询和迭代查询,递归查询是以本地名称服务器为中心查询, 递归查询是默认方式,迭代查询是以DNS客户端,也就是客户机器为中心查询。其实DNS客户端和本地名称服务器是递归,而本地名称服务器和其他名称服务器之间是迭代。


什么是递归DNS?

递归DNS查找是一台DNS服务器与其他几台DNS服务器通信以查找IP地址并将其返回给客户端的地方。这与迭代DNS查询相反,在迭代DNS查询中,客户端直接与查找中涉及的每个DNS服务器进行通信。尽管这是一个非常技术性的定义,但仔细研究DNS系统以及递归和迭代之间的区别应该可以帮助您解决问题。


什么是DNS服务器?

每当用户在浏览器窗口中输入域名(例如“ dns.com”)时,都会触发DNS查找。然后,一系列称为DNS服务器的远程计算机会找到该域的IP地址,并将其返回给用户的计算机,以便他们可以访问正确的网站。

几种不同类型的DNS服务器必须协同工作才能完成DNS查找。DNS解析器、NS根服务器、DNS TLD服务器和DNS权威名称服务器都必须提供信息以完成查找。在缓存的情况下,这些服务器之一可能已在上一次查找期间保存了查询的答案,然后可以将其从内存中传递出来。


递归和迭代之间有什么区别?

 递归和迭代是计算机科学术语,描述了解决问题的两种不同方法。在递归中,程序会重复调用自身直到满足条件,而在迭代过程中,将重复执行一组指令,直到满足条件为止。如果不编写代码,很难说明这种细微的区别,但是关键要点在于,递归是一种反复调用自身的解决方案。前者需要确定解空间是收敛的,后者需要确定循环的结束条件。

 

例如,想象一下Jim在家里丢了钥匙,正在寻找一种系统的方式来找到它们。递归的解决方案是让Jim一直寻找他的钥匙,直到找到它们为止。吉姆将开始寻找,如果找不到他的钥匙,他将返回原来的指示继续寻找直到找到它们。一个迭代的解决方案是让Jim搜索一个房间五分钟,然后返回他的指令并搜索下一个房间五分钟,然后继续此循环,直到他找到自己的钥匙或遍历整个房间列表为止搜索。

 

理解递归和迭代DNS查找之间的区别并不需要对递归和迭代有深入的了解,在递归查找中,DNS服务器执行递归并继续查询其他DNS服务器,直到它具有返回给客户端的IP地址为止(通常是用户的操作系统)。在迭代DNS查询中,每个DNS查询都使用一个地址直接响应客户端,以供另一个DNS服务器询问,并且客户端继续查询DNS服务器,直到其中一个使用给定域的正确IP地址进行响应为止。

 

换句话说,客户端在递归DNS查询中进行某种形式的委派。它告诉DNS解析器,“嘿,我需要该域的IP地址,请查寻它,直到拥有它为止,再找我。”同时,在迭代查询中,客户端告诉DNS解析器, “嘿,我需要该域的IP地址。请在查找过程中让我知道下一个DNS服务器的地址,以便我自己查找。”

 

递归DNS有什么优势?

由于缓存递归DNS查询通常比迭代查询的解析速度更快。递归DNS服务器将对执行的每个查询的最终答案进行缓存,并将该最终答案保存一定的时间(称为生存时间)。

当递归解析器收到对其缓存中已经具有的IP地址的查询时,它可以快速将缓存的答案提供给客户端,而无需与任何其他DNS服务器进行通信。如果aDNS服务器为许多客户端提供服务和/或b请求的网站非常受欢迎,则很有可能从缓存中快速提供响应。

递归DNS的缺点是什么?

不幸的是,在开放的DNS服务器上允许递归DNS查询会造成安全漏洞,因为此配置可使攻击者执行DNS放大攻击和DNS缓存中毒。

赶快关注帝恩思公众号了解更多资讯吧。