权威名称服务器信息存储在哪里?

权威名称服务器信息存储在哪里?

简洁版本:

在哪里可以host -t ns github.com得到答案?

长版本:

在幻灯片 7 中这是谷歌幻灯片,最后两站:如果“x.root-servers.net”不知道域名,它会向“权威名称服务器”询问。问题是谁将“权威名称服务器”(信息,又名 IP)告知根服务器?

我确实读过相关文章,但我还是不知道答案。

我知道whois查找将获取域名的信息(包括名称服务器),这是路由器获取“权威名称服务器”信息的方式吗?

哪个服务器存储着权威名称服务器的信息?域名注册商的服务器吗?

已编辑

我不明白你们(专家)为什么认为这是题外话。我读过(又读了一遍)Serverfault的FAQ,并不认为这是题外话。它确实说你可以问有关“网络路由、交换机和防火墙”的问题。

我不需要有关整个 dns-loopup 路由的所有教育内容,但只是不明白一个步骤 - 权威服务器信息保存在哪里。如果这不是询问这个问题的地方,我应该去哪里?SO.com?

编辑2

  • 更新了标题
  • 已从 oo 获得答案:gTLD 服务器保存数据。

答案1

希望这对你来说会更清楚一些,尽管它有点冗长。

幻灯片的这一部分略有错误——根服务器不会代表您向任何其他服务器请求记录。在该示例中,所有繁重的工作均由 Google 的 8.8.8.8 服务器完成

为了更好地解释这一点,您首先需要了解权威 DNS 服务器和递归 DNS 服务器之间的区别。

权威 DNS 与递归 DNS

权威 DNS 服务器只会针对其托管的记录做出响应。如果您尝试向权威服务器请求不属于其负责的记录,它会告诉您“否”(拒绝)或告诉您查找位置(无错误,以及 DNS 数据包的 AUTHORITY 部分中的服务器列表)。

递归 DNS 服务器(例如您的 Linksys、您的 ISP、Google 的 8.8.8.8 等)将尽最大努力遵循 DNS 服务器引用链,直到它能够到达权威服务器以获取答案。这也称为“DNS 递归”。

根服务器和引荐

根服务器(x.root-servers.net)充当 DNS 树顶端的权威 DNS 服务器(.),它告诉请求者应该寻找的下一个 DNS 服务器是什么。

通常,根服务器会将您引导至相关 TLD 的 gTLD 服务器(.com、.net、.org 等)。

域名注册商和 gTLD 服务器

当您注册域名时,您需要输入一组 DNS 服务器(或使用您的注册商自己的服务器)。

在域名注册(或更新)时,您的域名注册商会向相应的通用顶级域名服务器(或 gTLD 服务器)发送更新,这些服务器负责提供相关 TLD 的推荐(.com、.net、.org、.uk 等)。

更新内容基本上是说“嘿,将来,每当有人询问 github.com 时,请让他们参考 ns1.p16.dynect.net、ns2.p16.dynect.net、ns3.p16.dynect.net 和 ns4.p16.dynect.net”。

gTLD 服务器将保留此信息,直到注册商对其进行更改。

查询:从根域名到 gTLD,再到 Github

当你向 a.root-servers.net 询问“www.github.com”(“dig www.github.com @a.root-servers.net”)时,它的响应是:

“我对 github.com 的具体情况不太了解,但我可以告诉你,这些 .com 的 DNS 服务器中的任何一个都可以给你更好的答案”。

$ dig www.github.com @a.root-servers.net

; <<>> DiG 9.8.3-P1 <<>> www.github.com @a.root-servers.net
;; global options: +cmd
;; Got answer:
;; ->>HEADER<<- opcode: QUERY, status: NOERROR, id: 52400
;; flags: qr rd; QUERY: 1, ANSWER: 0, AUTHORITY: 13, ADDITIONAL: 14
;; WARNING: recursion requested but not available

;; QUESTION SECTION:
;www.github.com.            IN  A

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

;; ADDITIONAL SECTION:
m.gtld-servers.net. 172800  IN  A   192.55.83.30
l.gtld-servers.net. 172800  IN  A   192.41.162.30
k.gtld-servers.net. 172800  IN  A   192.52.178.30
j.gtld-servers.net. 172800  IN  A   192.48.79.30
i.gtld-servers.net. 172800  IN  A   192.43.172.30
h.gtld-servers.net. 172800  IN  A   192.54.112.30
g.gtld-servers.net. 172800  IN  A   192.42.93.30
f.gtld-servers.net. 172800  IN  A   192.35.51.30
e.gtld-servers.net. 172800  IN  A   192.12.94.30
d.gtld-servers.net. 172800  IN  A   192.31.80.30
c.gtld-servers.net. 172800  IN  A   192.26.92.30
b.gtld-servers.net. 172800  IN  A   192.33.14.30
b.gtld-servers.net. 172800  IN  AAAA    2001:503:231d::2:30
a.gtld-servers.net. 172800  IN  A   192.5.6.30

;; Query time: 17 msec
;; SERVER: 198.41.0.4#53(198.41.0.4)
;; WHEN: Sun Sep 28 05:38:56 2014
;; MSG SIZE  rcvd: 492

现在,您有了一个可以告诉您有关 .com 域名的服务器列表。接下来,当您询问其中一个被引荐的 gTLD 服务器(“dig www.github.com @a.gtld-servers.net”)时,它的响应是:

“我对 www.github.com 不太了解,但我可以告诉你,github.com 的任何一个服务器都可以给你更好的答案”。

$ dig www.github.com @a.gtld-servers.net

; <<>> DiG 9.8.3-P1 <<>> www.github.com @a.gtld-servers.net
;; global options: +cmd
;; Got answer:
;; ->>HEADER<<- opcode: QUERY, status: NOERROR, id: 9895
;; flags: qr rd; QUERY: 1, ANSWER: 0, AUTHORITY: 4, ADDITIONAL: 4
;; WARNING: recursion requested but not available

;; QUESTION SECTION:
;www.github.com.            IN  A

;; AUTHORITY SECTION:
github.com.     172800  IN  NS  ns1.p16.dynect.net.
github.com.     172800  IN  NS  ns3.p16.dynect.net.
github.com.     172800  IN  NS  ns2.p16.dynect.net.
github.com.     172800  IN  NS  ns4.p16.dynect.net.

;; ADDITIONAL SECTION:
ns1.p16.dynect.net. 172800  IN  A   208.78.70.16
ns3.p16.dynect.net. 172800  IN  A   208.78.71.16
ns2.p16.dynect.net. 172800  IN  A   204.13.250.16
ns4.p16.dynect.net. 172800  IN  A   204.13.251.16

;; Query time: 43 msec
;; SERVER: 192.5.6.30#53(192.5.6.30)
;; WHEN: Sun Sep 28 05:40:14 2014
;; MSG SIZE  rcvd: 182

最后,当你询问你被引导到的指定服务器之一(“dig www.github.com @ns1.p20.dynect.net”)时,它的响应是:

“哦,是的!我知道这个,www.github.com 是 github.com 的昵称,github.com 的 IP 地址是 192.30.252.129”。

dig www.github.com @ns1.p16.dynect.net

; <<>> DiG 9.8.3-P1 <<>> www.github.com @ns1.p16.dynect.net
;; global options: +cmd
;; Got answer:
;; ->>HEADER<<- opcode: QUERY, status: NOERROR, id: 35620
;; flags: qr aa rd; QUERY: 1, ANSWER: 2, AUTHORITY: 4, ADDITIONAL: 0
;; WARNING: recursion requested but not available

;; QUESTION SECTION:
;www.github.com.            IN  A

;; ANSWER SECTION:
www.github.com.     3600    IN  CNAME   github.com.
github.com.     30  IN  A   192.30.252.128

;; AUTHORITY SECTION:
github.com.     86400   IN  NS  ns3.p16.dynect.net.
github.com.     86400   IN  NS  ns1.p16.dynect.net.
github.com.     86400   IN  NS  ns4.p16.dynect.net.
github.com.     86400   IN  NS  ns2.p16.dynect.net.

;; Query time: 25 msec
;; SERVER: 208.78.70.16#53(208.78.70.16)
;; WHEN: Sun Sep 28 05:57:19 2014
;; MSG SIZE  rcvd: 148

递归 DNS 服务器负责遍历此引用链,直到得到答案并返回给您。这通常是您的 ISP 的 DNS 服务器为您执行的操作。

您的浏览器(或您正在使用的任何应用程序)会等待递归 DNS 服务器完成所有繁重的工作并向您返回单个答案。所有这一切往往在很短的时间内发生,以毫秒为单位 - 如果递归 DNS 服务器的缓存中已有答案,则速度会更快。

相关内容