mit*_*tnk 0 domain-name-system domain
精简版:
从哪里host -t ns github.com得到答案?
长版:
在这张谷歌幻灯片的幻灯片 7 中,最后两站:如果“x.root-servers.net”不知道域,它会向“权威名称服务器”询问。问题是谁告诉“权威名称服务器”(信息,又名 IP)回到根服务器?
我确实看过一篇相关的文章,但我仍然不知道答案。
我知道whois查找将获取域名的信息(包括名称服务器),这是路由器获取“权威名称服务器”信息的方式吗?
哪个服务器存储权威名称服务器的信息?来自域名注册商的服务器?
编辑:
我不明白你们(专家)为什么把这个选为题外话。我已经阅读(并再次阅读)Serverfault 的常见问题解答,并且不认为这是题外话。它确实说您可以询问有关“网络路由、交换机和防火墙”的问题。
我不是在请求有关整个 dns-loopup 路由的所有教育内容,但只是不了解一个步骤 - 保存权威服务器信息的位置。如果这不是问这个的地方,我应该在哪里?SO.com?
编辑2:
希望这对您来说会更清楚一些,即使它有点罗嗦。
幻灯片的那部分有点不正确——根服务器不会代表您向任何其他服务器询问记录。在该示例中,所有繁重的工作都由 Google 的 8.8.8.8 服务器完成
为了更好地解释这一点,您首先需要了解权威 DNS 服务器和递归 DNS 服务器之间的区别。
权威 DNS 服务器将只响应其托管的记录的答案。如果您尝试向权威服务器询问它不负责的记录,它会告诉您“否”。(REFUSED) 或告诉您在哪里查看(NOERROR,以及 DNS 数据包的 AUTHORITY 部分中的服务器列表)。
递归 DNS 服务器(例如您的 Linksys、您的 ISP、Google 的 8.8.8.8 等)将尽其所能跟踪 DNS 服务器引用链,直到它可以到达权威服务器以获得答案。这也称为“DNS 递归”。
根服务器 (x.root-servers.net) 充当 DNS 树 (.) 顶部的权威 DNS 服务器,它告诉请求者他们应该寻找的下一个 DNS 服务器是什么。
通常,根服务器会将您转至相关 TLD(.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 服务器会保留此信息,直到注册商更改该信息。
当您向 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
Run Code Online (Sandbox Code Playgroud)
所以,现在您有一个服务器列表,可以告诉您有关 .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
Run Code Online (Sandbox Code Playgroud)
最后,当您询问您被提及的指定服务器之一(“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
Run Code Online (Sandbox Code Playgroud)
递归 DNS 服务器负责遍历此引用链,直到它们得到答复以回馈给您。这通常是您的 ISP 的 DNS 服务器代表您执行的操作。
您的浏览器(或您正在使用的任何应用程序)会等待,直到您的递归 DNS 服务器完成所有繁重的工作并向您返回一个单一的答案。所有这一切往往会在很短的时间内发生,以毫秒为单位——如果递归 DNS 服务器已经在其缓存中找到了答案,速度甚至会更快。
| 归档时间: |
|
| 查看次数: |
1152 次 |
| 最近记录: |