DNS 记录如何更新到 Internet 上的所有 DNS 服务器?

joe*_*ick 24 dns

如果有人在 GoDaddy、OpenDNS 等上托管主机名/网站名称,他们将如何为新添加的主机名更新全球 DNS 服务器的记录?由于互联网上有很多 DNS 服务器,每个 ISP 为其客户提供不同的 DNS 服务器。

dav*_*dgo 36

他们没有。(稍微简化一点)DNS 是一个层次结构。DNS 服务器知道如何查找父 DNS 服务器或如何查找“根”服务器列表。

如果他们找到父 DNS 服务器,他们就会询问它,然后它会询问其父 DNS 服务器,直到得到权威答案。

然而,在大多数情况下,名称服务器知道根名称服务器,根名称服务器又将它们指向域的适当服务器。(或在某些情况下为域的第一部分提供适当的服务器。重复此过程,直到解析域名)。

下面是一个“跟踪”示例,它显示了系统如何权威地解析www.google.com的 IP 地址(忽略签名):

减少 Linux 命令“dig +trace www.google.com”的输出

; <<>> DiG 9.11.3-1ubuntu1.11-Ubuntu <<>> +trace www.google.com
;; global options: +cmd
.           514683  IN  NS  a.root-servers.net.
.           514683  IN  NS  b.root-servers.net.
.           514683  IN  NS  c.root-servers.net.
.           514683  IN  NS  d.root-servers.net.
.           514683  IN  NS  e.root-servers.net.
.           514683  IN  NS  f.root-servers.net.
.           514683  IN  NS  g.root-servers.net.
.           514683  IN  NS  h.root-servers.net.
.           514683  IN  NS  i.root-servers.net.
.           514683  IN  NS  j.root-servers.net.
.           514683  IN  NS  k.root-servers.net.
.           514683  IN  NS  l.root-servers.net.
.           514683  IN  NS  m.root-servers.net.
;; Received 525 bytes from 10.0.3.254#53(10.0.3.254) in 13 ms

com.            172800  IN  NS  i.gtld-servers.net.
com.            172800  IN  NS  k.gtld-servers.net.
com.            172800  IN  NS  a.gtld-servers.net.
com.            172800  IN  NS  e.gtld-servers.net.
com.            172800  IN  NS  h.gtld-servers.net.
com.            172800  IN  NS  j.gtld-servers.net.
com.            172800  IN  NS  l.gtld-servers.net.
com.            172800  IN  NS  m.gtld-servers.net.
com.            172800  IN  NS  c.gtld-servers.net.
com.            172800  IN  NS  b.gtld-servers.net.
com.            172800  IN  NS  f.gtld-servers.net.
com.            172800  IN  NS  g.gtld-servers.net.
com.            172800  IN  NS  d.gtld-servers.net.


google.com.     172800  IN  NS  ns2.google.com.
google.com.     172800  IN  NS  ns1.google.com.
google.com.     172800  IN  NS  ns3.google.com.
google.com.     172800  IN  NS  ns4.google.com.
;; Received 840 bytes from 192.33.14.30#53(b.gtld-servers.net) in 35 ms

www.google.com.     300 IN  A   172.217.25.36
;; Received 59 bytes from 216.239.36.10#53(ns3.google.com) in 178 ms
Run Code Online (Sandbox Code Playgroud)
  1. 第一个查询查找根服务器 (*.root-servers.net)
  2. 然后根服务器建议在哪里可以找到域的最右边部分 - “.com”
  3. 第三个查询返回 google.com 的名称服务器
  4. 最后,Google 的域名服务器为www.google.com提供了答案

我注意到在上面的示例中,我手动将查询结果剥离为基本要素。实际上,名称服务器通常不会进行所有这些查询,因为它会记住其中的一部分。也就是说,第一次有人查找任何 .com 域名时,他们使用的 DNS 服务器会记住名称服务器(在本例中为 172800 秒),因此不需要再次查找。同样对于查找的所有更具体的部分。

因此,如果有人通过 GoDaddy(或任何注册商)注册 example.com,GoDaddy 需要(以编程方式)将 example.com 的名称服务器输入到“.com”名称服务器中。同样,如果他们在 AU,如果他们想注册“example.com.au”,他们需要将信息输入“.com.au”空间——这需要与控制“域名服务器”的人达成协议。 .com.au”空间——这就是为什么并非所有注册商都可以注册所有域名,以及为什么获得新的顶级域名是一个这样的过程——他们需要支付大笔资金在根域名服务器上注册顶级域名。

  • @csm - DNS 服务器不应该尽可能多地缓存。它应该按照区域中的 TTL 的指示进行缓存,因为过度缓存是不好的。此外,虽然延迟是可以检测到的,但查找是非常便宜的 CPU 和带宽。 (2认同)