了解 DNS 域查找机制

了解 DNS 域查找机制

促使我尝试解开这个过程的具体查询是:

assets.example.com如果父域名example.com已经解析,那么子域名(如 )的 DNS 查找速度是否会更快?

根据我的(天真的)理解,基本流程将域名转换为 IP 地址的方法非常简单。十三台根服务器知道如何解析像com和 这样的顶级域名net,而它们的地址实际上是硬编码在网络硬件中的。在查找 的情况下example.com,我们的本地 DNS 服务器(可能是我们的路由器)会向其中一个根服务器查询相关域,并将它引导至 的顶级名称服务器com。然后,它会询问该名称服务器是否知道如何解析example。如果知道,我们就完成了,如果不知道,我们将被引导至另一台服务器。此过程中的某些服务器可能正在缓存,因此在一段时间内,我们的本地路由器现在就可以立即知道在哪里查找comexample

但我还是不太明白。

  • 我知道还有其他中间 DNS 服务器,例如 ISP 提供的服务器。在什么时候查询它们?
  • 如果com我们所指的 TLD 名称服务器不知道如何解析example,那么是否可以说这就是行的末尾:example.com无法解析?
  • 当我注册域名并配置名称服务器时,我实际上是在编辑该 TLD 的名称服务器使用的数据库中我的子域名的一组 NS 记录吗?注册商本身是否维护“代理”名称服务器?

维基百科解释说,一些 DNS 服务器将缓存与递归查询实现相结合,这使得它们能够提供缓存命中并可靠地解决缓存未命中问题。我不明白这些服务器是如何被查询的,也不明白解析算法是如何(甚至广义上)工作的。com例如,所有权威名称服务器都是精确镜像,还是解析器必须依次尝试每个服务器?

回想我最初的问题,我可能会非常谨慎地回答“否”,假设 A 记录都在同一个名称服务器上。如果有人能帮我解答我的无知,我将不胜感激!

答案1

如果父域 example.com 已经解析,那么对子域(例如 assets.example.com)的 DNS 查找是否会更快?

假设场景中有一个缓存服务器,是的。这是因为为了找到 example.com. 中任何内容的 A 记录,必须知道 example.com. 的名称服务器。当发出对 assets.example.com. 的请求时,example.com. 的名称服务器应该已被缓存,因此唯一的查询是针对 assets.example.com. 本身。

我知道还有其他中间 DNS 服务器,例如 ISP 提供的服务器。在什么时候查询它们?

这些通常是缓存或递归名称服务器。它们会为您完成繁重的工作(遍历树的多个请求),然后缓存结果以加快对同一名称的后续查询。

例如,所有权威的 com 名称服务器是否都是精确的镜像,或者解析器是否必须依次尝试每一个?

是的,它们包含相同的信息。解析器只需找到一个实际有效的即可。

如果我们所引用的 com TLD 名称服务器不知道如何解析 example,那么是否可以说这就是行的末尾:example.com 无法解析?

如果 .com. 名称服务器响应并表示 example.com. 不存在,则结果为该名称不存在。如果 .com. 名称服务器不响应查询,则解析器应尝试其他 .com. 名称服务器。

当我注册域名并配置名称服务器时,我实际上是在编辑该 TLD 的名称服务器使用的数据库中我的子域名的一组 NS 记录吗?注册商本身是否维护“代理”名称服务器?

正确。注册域名时,您需要提供 NS 记录(如果需要,还需要提供一些 A 记录)以插入父域。注册商不一定自己运行这些名称服务器,但具有修改这些名称服务器数据库的机制。

答案2

最有可能的是,您的计算机配置为使用 ISP 的 DNS 服务器。这可能是一个缓存名称服务器。这意味着它将在一段时间内(通常是 TTL)缓存命中(在某些情况下是未命中)。如果您查询此名称服务器的缓存中的某些内容,那么您就大功告成了。它会告诉您 IP。

如果未命中,它将查询该域的顶级名称服务器(com、net、org 等)。在此示例中,它将询问 COM 在哪里可以找到 EXAMPLE.COM,COM 将使用 EXAMPLE.COM 域的权威名称服务器地址 (ip) 进行响应。然后,它将向该名称服务器询问 EXAMPLE.COM 的 IP 是什么,并告知缓存名称服务器,缓存名称服务器将告诉您(这是一条 A 记录)。此外,它还会缓存该 IP,以防以后有人询问。

如果您正在寻找 ASSETS.EXAMPLE.COM,也会发生同样的事情,但是当您找到 EXAMPLE.COM 的权威名称服务器时,您可以直接向它询问 ASSETS.EXAMPLE.COM,它会回复 A 记录 (ip)、CNAME 或 NS 记录(还有其他类型,如 ipv6 的 AAAA、邮件的 MX……但这对于本例来说已经足够了)。如果它给您一个 A 记录,您就大功告成了。您有一个 IP。如果它给您一个 NS,则意味着该其他服务器是 ASSETS.EXAMPLE.COM 的权威服务器,您应该去问那个人 IP 是多少。

CNAME 是另一种类型,它重新启动整个过程,并且实际上在顶点记录(如 example.com)上不可用。

相关内容