导致我尝试取消此过程的特定查询是:
如果父域assets.example.com
已经解析,那么子域的DNS查找(例如example.com
)会更快吗?
通过我(天真)的理解,将域名转换为IP地址的basic process非常简单。知道如何解析顶级域名(如com
和net
)的十三个根服务器的地址是在网络硬件中进行硬编码的。在查找example.com
的情况下,我们的本地DNS服务器(可能是我们的路由器)要求其中一个根服务器在哪里找到com
的顶级名称服务器。然后它会询问结果名称服务器是否知道如何解析example
。如果确实如此,我们就完成了,如果没有,我们就会被传递到另一台服务器。此过程中的每个名称服务器都可能正在缓存,因此有一段时间我们的本地路由器现在会知道在哪里查找com
和example
,com
服务器将知道在哪里寻找example
。
尽管如此,我还是没有得到它。
com
TLD名称服务器不知道如何解决example
,那么它如何解决其他名称服务器需要检查的问题?或者这只是意味着example.com
无法解决?Wikipedia解释说,某些DNS服务器将缓存与递归查询实现相结合,允许它们提供缓存命中并可靠地解决缓存未命中问题。我不明白这些服务器是如何被查询的,或者解析算法如何(甚至广泛地)起作用。
回顾我最初的问题,假设A记录在同一名称服务器上,我可能会尝试“不”。这准确吗?
答案 0 :(得分:17)
首先,误解:
com
TLD名称服务器不知道如何解决example
,则无法确定要检查的其他名称服务器。 本身就是要检查的名称服务器。它要么知道example
,要么example
不存在。你的问题的答案是肯定的。如果名称服务器已经解析example.com
(并且该结果在其缓存中仍然有效),那么它将能够更快地解析assets.example.com
。
递归解析过程就像你描述的那样:首先找出.
(根)的名称服务器,然后找出com
等的名称服务器......只有递归解析器实际上并没有要求.
和com
以及example.com
的域名服务器。它实际上每次都要求assets.example.com
。根服务器不会给出答案(他们对assets.example.com
一无所知),但他们至少可以提供com
的名称服务器的引用。类似地,com
的名称服务器不会回答问题(他们也不知道),但他们可以提供example.com
的名称服务器的推荐。 example.com
的名称服务器可能知道也可能不知道问题的答案,具体取决于assets.example.com
是否被委托给其他名称服务器,还是在与example.com
相同的区域中进行配置。因此,递归解析器将收到最终答案或另一个推荐。