根 DNS 服务器可能是最典型的主(非只读)DNS 服务器。目前有 13 个用于根 DNS 服务器的 IP 地址;但是,考虑到 IP 任播技术,全球部署了超过 13 个根 DNS 服务器。
如果有人想更新所有根 DNS 服务器的 DNS 记录,那么所有这些 DNS 服务器之间是否存在某种同步或复制机制?
更复杂的是,如果两个人要同时更新同一个DNS记录,DNS是如何解决潜在冲突的呢?
例如,人A
将 DNS 记录更新r1
为r2
on a.root-servers.net.(deployed at region A)
,同时,人B
将同一 DNS 记录更新r1
为r3
on a.root-servers.net.(deployed at region B)
;region A
此外,假设和之间存在显着的网络延迟region B
。
第二个问题类似于数据库集群,存在多个主数据库服务器,这些主服务器同步所有其他主服务器的数据。
根是可以找到顶级域权限的 DNS 服务器列表。(许多 DNS 查询永远不会到达根服务器,而是从其他地方获得缓存的响应。)有一个根区域维护者生成它。每个根服务器维护者都使用DNS 区域传输来获取它,并使用特定于站点的机制在内部复制它。这些根服务器可以在 DNS 软件中找到,也可以在此处或此处的 root-servers.net 区域中找到。
顶级域的变化相对较少。尽管这种复制是针对数百个实例的 13 个不同的操作员,但最终的一致性在实践中并不重要。当在新 TLD 上注册一个域时,它的 DNS 服务器可能早就在根目录中了。
13 个名称,26 个 IP 地址,许多任播实例。所有根服务器都有 IPv4 和 IPv6 服务地址。任何一种都可以使用,任君挑选。
另请参阅: 根名称服务器的 IP 地址可以更改吗?
回答您的第一个问题:“如何在 TLD DNS 服务器之间同步 DNS 区域”
根 DNS 服务器和 TLD DNS 机制与较低级别的普通 DNS 服务器非常不同。简而言之,每个 TLD 都有自己的机制来保持服务器同步。他们可能使用区域传输,或者他们可能有非常具体的脚本来在所有节点之间同步和错误检查区域数据。
对于您的第二个问题:“DNS 如何防止冲突更新”
这在普通 DNS 协议中通过一个 DNS 主机来处理,该主机将接收或更改区域数据,但其余的 DNS 从机将无权更改任何内容。此外,区域更改通过 SOA 记录中的序列号进行跟踪。权威 DNS 服务器使用此信息来确定它们是否“落后”并需要获取该区域的新副本。
由于给定区域实际上只有 1 个主控,因此不可能有冲突的更改。