当域的名称服务器是域中的主机时,DNS 解析如何工作?

当域的名称服务器是域中的主机时,DNS 解析如何工作?

关于 DNS 协议的快速问题,我不太理解。我们以一个网站为例,比如 google.com。我在浏览器中输入地址。

DNS 解析器将检查根服务器,即 GTLD 服务器。如果我理解正确的话,它会说“嘿,检查 nsX.google.com 以获取答案”。

但是在这种情况下,如果答案由 nsX.google.com 服务器自己掌握,解析器如何知道 nsX.google.com 的 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

谢谢。

答案1

这种明显的循环依赖性可以通过使用所谓的“粘合”记录来解决。

这个答案

答案2

您有权威服务器(在其上定义区域),但根服务器知道哪些域在哪些服务器上注册。

简而言之,您从 a.gtld-servers.net 获得“ns1.google.com 在哪里”:

$ dig @a.gtld-servers.net.ns1.google.com

;<<>> DiG 9.6.1 <<>> @a.gtld-servers.net.ns1.google.com
;(找到 2 个服务器)
;; 全局选项: +cmd
;; 得到答案:
;; ->>HEADER<<- 操作码:QUERY,状态:NOERROR,id:19654
;; 标志:qr rd;查询:1,答案:0,权限:4,附加:4
;; 警告:请求递归但不可用

;; 问题部分:
;ns1.google.com。在

;; 权威部分:
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。

;; 附加部分:
ns2.google.com.172800 在 216.239.34.10
ns1.google.com.172800 IN A 216.239.32.10
ns3.google.com.172800 在 216.239.36.10
ns4.google.com.172800 在 216.239.38.10

;; 查询时间:139 毫秒
;; 服务器:192.5.6.30#53(192.5.6.30)
;; 时间:2010 年 10 月 19 日星期二 09:39:25
;; 收到的消息大小: 164

相关内容