简单情况:
- 我注册了一个域名
- 指定 2 个名称服务器
- 设置网站托管
- 在我的浏览器中访问域名
此时浏览器告诉我它无法解析主机,大概是因为 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.com
1440 秒。如果你向缓存服务器请求记录在你发布之前,您就有获得负面缓存的风险。
相关答案: 负缓存通常持续多长时间?
答案4
您的域名需要插入顶级 DNS 服务器。当您发出 DNS 请求时,例如 www.thisismyexampledomain.com,您的 DNS 客户端会转到您的递归 DNS 并请求信息。
然后,您的 DNS 必须寻找答案,下面是简化的过程。它从最顶部开始,即请求末尾的假定“。”。这会将您的 DNS 定向到负责“com”的服务器。当它检查这些服务器时,它们会将您的 DNS 定向到负责“thisismyexampledomain”的服务器。然后,您的 DNS 将从这些服务器获取主机名“www”的答案并将其返回到您的计算机。
顶级域名服务器由世界各地的多家公司管理,您可能已经猜到,它们的工作非常繁忙,每天都需要进行大量更改。出于多种原因,这些公司会在特定时间批量处理更改。