13

导致我尝试取消选择此过程的具体查询是:

如果父域已经解析,DNS 查找子域(例如assets.example.com)会更快吗?example.com

根据我的(天真)理解,将域名转换为 IP 地址的基本过程非常简单。com知道如何解析和等顶级域的 13 个根服务器的地址net被硬编码在网络硬件中。在查找 的情况下example.com,我们的本地 DNS 服务器(可能是我们的路由器)会询问这些根服务器之一在哪里可以找到 的顶级名称服务器com。然后它会询问生成的名称服务器是否知道如何解析example。如果是,我们就完成了,如果不是,我们将被传递到另一台服务器。此过程中的每个名称服务器都可能正在缓存,因此有一段时间我们的本地路由器现在会立即知道在哪里查找comexample,并且com服务器将知道在哪里查找example.

不过,我真的不明白。

  • 我知道还有其他中间 DNS 服务器,例如 ISP 提供的那些。他们在什么时候被询问?
  • 如果comTLD 名称服务器不知道如何解析example,它如何确定要检查的其他名称服务器?或者这只是意味着example.com无法解决?
  • 当我注册一个域并配置名称服务器时,我是否实际上在为该 TLD 的名称服务器使用的数据库中的特定 TLD 的子域编辑一组 NS 记录?

Wikipedia 解释说,一些 DNS 服务器将缓存与递归查询实现相结合,这允许它们提供缓存命中并可靠地解决缓存未命中问题。我不明白这些服务器是如何被查询的,或者解析算法是如何(甚至广泛地)工作的。

回顾我最初的问题,假设 A 记录都在同一个名称服务器上,我可能会选择“否”。这是准确的吗?

4

1 回答 1

23

首先,误解:

  • 根提示(13 个根服务器的名称和 IP 地址)几乎从未“硬编码在网络硬件中”。网络硬件(如路由器)有时可能有一个内置的 DNS 解析器,如果它碰巧也有一个 DHCP 服务器,但如果有,它通常只是一个转发解析器,将查询传递给上游名称服务器(从 ISP 获得) 如果它不知道答案。
  • ISP 提供的名称服务器通常不充当“中间 DNS 服务器”。您可以使用自己的名称服务器(例如公司名称服务器,或者在您的计算机上安装 BIND),或者使用您的 ISP 提供的名称服务器。无论哪种情况,您选择的任何名称服务器都会从头到尾处理递归解析过程。例外是前面提到的转发名称服务器。
  • 如果comTLD 名称服务器不知道如何解析example,则无法确定要检查的其他名称服务器。它本身就是要检查的名称服务器。它要么知道example,要么example不存在。

你的问题的答案是肯定的。如果名称服务器已经解析example.com(并且该结果在其缓存中仍然有效),那么它将能够assets.example.com更快地解析。

递归解析过程就像您描述的那样:首先找出.(根)的名称服务器,然后找出 的名称服务器com,等等......只有递归解析器实际上并不要求.com和的名称服务器example.com。它实际上要求assets.example.com每次。根服务器不会给它这个问题的答案(他们assets.example.comcom. 同样, 的名称服务器com不会回答问题(他们也不知道),但他们可以为example.com. 名称服务器example.com可能知道也可能不知道问题的答案,这取决于是否assets.example.com被进一步委托给其他名称服务器或在与example.com. 因此,递归解析器将收到最终答案或另一个推荐。

于 2012-08-09T19:47:59.557 回答