关于DNS协议的快速问题,我真的不明白。 让我们拿一个网站,说google.com。 我在浏览器中input地址。
DNSparsing器将检查根服务器,GTLD服务器。 这就是说,如果我理解的很好,“嘿,检查nsX.google.com得到你的答案”。
但是在这种情况下,如果parsing器自己知道nsX.google.com服务器的IP,那么parsing器如何知道IP?
disco:~ Disco$ dig +trace ns1.google.com ; <<>> DiG 9.6.0-APPLE-P2 <<>> +trace ns1.google.com ;; global options: +cmd . 50181 IN NS j.root-servers.net. [...] . 50181 IN NS a.root-servers.net. ;; Received 449 bytes from 192.168.1.1#53(192.168.1.1) in 55 ms com. 172800 IN NS a.gtld-servers.net. [...] com. 172800 IN NS m.gtld-servers.net. ;; Received 495 bytes from 199.7.83.42#53(l.root-servers.net) in 165 ms 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 164 bytes from 192.31.80.30#53(d.gtld-servers.net) in 219 ms ns1.google.com. 345600 IN A 216.239.32.10 ;; Received 48 bytes from 216.239.32.10#53(ns1.google.com) in 70 ms
谢谢。
这种明显的循环依赖性是通过使用所谓的“粘合”logging来解决的。
看到这个答案 。
您有权威的服务器(在其上定义了区域),但是根服务器知道在哪个服务器上注册了哪些域。
总之,您可以从a.gtld-servers.net获取“where is ns1.google.com”:
$ dig @ a.gtld-servers.net。 ns1.google.com ; << >> DiG 9.6.1 << >> @ a.gtld-servers.net。 ns1.google.com ; (find2个服务器) ;; 全局选项:+ cmd ;; 有答案: ;; - >> HEADER << - 操作码:QUERY,状态:NOERROR,ID:19654 ;; 标志:qr rd; QUERY:1,答案:0,AUTHORITY:4,附加:4 ;; 警告:recursion请求但不可用 ;; 问题部分: ; ns1.google.com。 在一个 ;; 授权部分: google.com。 172800在NS ns2.google.com。 google.com。 172800在NS ns1.google.com。 google.com。 172800在NS ns3.google.com。 google.com。 172800在NS ns4.google.com。 ;; 附加部分: ns2.google.com。 172800中A 216.239.34.10 ns1.google.com。 172800 IN A 216.239.32.10 ns3.google.com。 172800 IN A 216.239.36.10 ns4.google.com。 172800中A 216.239.38.10 ;; 查询时间:139毫秒 ;; SERVER:192.5.6.30#53(192.5.6.30) ;; 时间:2010年10月19日09:39:25 ;; 味精大小rcvd:164