为什么DNS服务传播速度如此之快?

假设我想将我的域名blah.example.com从位于IP地址1.2.3.4的服务器指向位于IP地址5.6.7.8的不同服务器。 这需要DNS更改。

为什么当我login到GoDaddy cPanel帐户,并对其中一个域名服务器进行DNS更改时,DNS可能需要长达24小时的时间才能在全球范围内“传播”,并且100%有效。如果我使用DynamicDNS或CloudFlare这样的服务,更改会立即发生?

因为它实际上不是DynamicDNS或CloudFlare的即时更改。 无论您使用哪种服务,都需要等到您的更改持续到世界上所有其他DNS服务器上的cachinglogging到期为止。 这个时间是由TTLpipe理的,对于一些服务(比如DynamicDNS)来说,它被保持在低水平以允许频繁的改变,而在另一些服务中被保持为高以允许更高效的caching。

要清楚,当你“改变DNS”有两个不同的东西我想到的:

1)更改名称服务器 – 名称服务器应立即在registry中进行更改。 DNScaching可能会发挥作用。 比方说,你正在使用名称服务器1.2.3.4。 您访问您的网站ticketmonster.com。 您的DNS服务器将caching根名称服务器的结果,告诉它在哪里查找您的域的DNSlogging。 然后,您更改域中的名称服务器并再次访问它。 假设您在DNScaching过期之前点击该网站,您仍然会点击旧网站。

如果您在更改名称服务器之前没有访问网站(并且您没有使用已经caching的公共名称服务器,因为有人访问了它),那么您很可能会在一两秒钟内看到更改。

还有其他例外情况(集群可能不会caching条目,因为您可能每次都访问不同的DNS服务器),但这是一个基本概述。

2)更改现有名称服务器上的DNSlogging – 可以说你正在添加/删除一条logging。 可能有一些延迟的原因。 你可能会遇到像上面那样的caching问题。 如果有多个名称服务器进行区域传输来复制该区域,则可能需要等到该区域传输完成(可以降低区域文件中的TTL以使其更快)。 如果涉及其他forms的复制,可能会有延迟。

还有其他一些情况,具体取决于如何设置DNS,但这些都是我能想到的常见原因。

如果您需要更改速度,更改TTL可能会有帮助,但请注意某些caching名称服务器忽略它们并设置他们想要的内容。