为什么新的 DNS 记录不能立即在全球范围内使用?

为什么新的 DNS 记录不能立即在全球范围内使用?

简单情况:

  1. 我注册了一个域名
  2. 指定 2 个名称服务器
  3. 设置网站托管
  4. 在我的浏览器中访问域名

此时浏览器告诉我它无法解析主机,大概是因为 DNS 记录尚未传播(即清除集体 DNS 服务器缓存)...

但这对我来说很奇怪。

为什么域名没有在浏览器中立即解析?为什么浏览器/路由器/名称服务器不能简单地将 DNS 查询转发到权威服务器,而是返回缓存的查询结果,该结果似乎是“无法找到主机,yourNewDomain.tld”

我可能对这里有些误解。我真的很希望得到一些澄清。

谢谢

答案1

这就是 TTL 的作用。它指定名称服务器清除缓存并获取新信息之前的时间量。

答案2

问:为什么浏览器/路由器/名称服务器不能简单地将 DNS 查询转发到权威服务器,而是返回缓存的查询结果(似乎是“无法找到主机,yourNewDomain.tld”)

答:因为您的域名服务器尚未从您的注册商“发布”到父服务器。假设您的域名是 .com,您的注册商需要将您的域名的域名服务器“发布”到 .com gTLD 服务器,这意味着 gTLD 服务器不知道哪些域名服务器对您的域名具有权威性,直到您的注册商将该信息“发布”到 .com gTLD 服务器。

此外,名称服务器不会返回缓存结果,它们不会返回任何结果,或者换句话说,它们返回 NXDOMAIN(不存在的域),因为在所有意图和目的上,您的域在父服务器知道您的名称服务器之前都不存在。

答案3

你的问题可能是以下两种情况之一:

  • 您的注册商尚未发布域名:
    @joeqwerty 和 @YLearn 对这一点进行了很好的报道。

  • 域名已发布,但您或其他人在域名进入权威名称服务器之前请求获取记录
    这被称为负缓存,如下所述。

DNS 中有两个常见的缓存概念:

  • 缓存:
    大多数人都熟悉缓存。当缓存服务器从权威域名服务器获得答案时,缓存服务器会在 TTL 期间将响应保存在内存中。缓存服务器将报告 ( total TTL- how long record has been in cache) 记录的 TTL。您可以通过向权威域名服务器询问相同的记录来确定原始 TTL。

  • 消极的缓存:
    人们不太熟悉的概念。这类似于缓存,但旨在防止缓存服务器在记录不存在时过度工作。由于无记录, 有无 TTL:相反,记录应该被负面缓存的持续时间是由SOA记录的最后一个数字字段确定的。

-

$ dig +noall +answer serverfault.com SOA
serverfault.com.        3600    IN      SOA     ns1.serverfault.com. sysadmins.stackoverflow.com. 2013020902 600 600 604800 1440

在上面的例子中,负缓存间隔为serverfault.com1440 秒。如果你向缓存服务器请求记录在你发布之前,您就有获得负面缓存的风险。

相关答案: 负缓存通常持续多长时间?

答案4

您的域名需要插入顶级 DNS 服务器。当您发出 DNS 请求时,例如 www.thisismyexampledomain.com,您的 DNS 客户端会转到您的递归 DNS 并请求信息。

然后,您的 DNS 必须寻找答案,下面是简化的过程。它从最顶部开始,即请求末尾的假定“。”。这会将您的 DNS 定向到负责“com”的服务器。当它检查这些服务器时,它们会将您的 DNS 定向到负责“thisismyexampledomain”的服务器。然后,您的 DNS 将从这些服务器获取主机名“www”的答案并将其返回到您的计算机。

顶级域名服务器由世界各地的多家公司管理,您可能已经猜到,它们的工作非常繁忙,每天都需要进行大量更改。出于多种原因,这些公司会在特定时间批量处理更改。

相关内容