我们执行如下dig:
$ dig +short com ns |sort
a.gtld-servers.net.
b.gtld-servers.net.
c.gtld-servers.net.
d.gtld-servers.net.
e.gtld-servers.net.
f.gtld-servers.net.
g.gtld-servers.net.
h.gtld-servers.net.
i.gtld-servers.net.
j.gtld-servers.net.
k.gtld-servers.net.
l.gtld-servers.net.
m.gtld-servers.net.
$ dig +short net ns |sort
a.gtld-servers.net.
b.gtld-servers.net.
c.gtld-servers.net.
d.gtld-servers.net.
e.gtld-servers.net.
f.gtld-servers.net.
g.gtld-servers.net.
h.gtld-servers.net.
i.gtld-servers.net.
j.gtld-servers.net.
k.gtld-servers.net.
l.gtld-servers.net.
m.gtld-servers.net.
可以看到com和net域使用一组相同的名字服务器,这其中有点奥妙。
再执行如下两个dig:
$ dig mydots.net @a.gtld-servers.net
; <<>> DiG 9.6.1-P2 <<>> mydots.net @a.gtld-servers.net
;; global options: +cmd
;; Got answer:
;; ->>HEADER<<- opcode: QUERY, status: NOERROR, id: 7502
;; flags: qr rd; QUERY: 1, ANSWER: 0, AUTHORITY: 2, ADDITIONAL: 2
;; WARNING: recursion requested but not available
;; QUESTION SECTION:
;mydots.net. IN A
;; AUTHORITY SECTION:
mydots.net. 172800 IN NS ns7.dnsbed.com.
mydots.net. 172800 IN NS ns8.dnsbed.com.
;; ADDITIONAL SECTION:
ns7.dnsbed.com. 172800 IN A 58.22.107.162
ns8.dnsbed.com. 172800 IN A 121.207.227.57
;; Query time: 227 msec
;; SERVER: 192.5.6.30#53(192.5.6.30)
;; WHEN: Wed Aug 24 13:26:11 2011
;; MSG SIZE rcvd: 106
$ dig llpop.com @a.gtld-servers.net
; <<>> DiG 9.6.1-P2 <<>> llpop.com @a.gtld-servers.net
;; global options: +cmd
;; Got answer:
;; ->>HEADER<<- opcode: QUERY, status: NOERROR, id: 20190
;; flags: qr rd; QUERY: 1, ANSWER: 0, AUTHORITY: 2, ADDITIONAL: 2
;; WARNING: recursion requested but not available
;; QUESTION SECTION:
;llpop.com. IN A
;; AUTHORITY SECTION:
llpop.com. 172800 IN NS ns1.dnsbed.com.
llpop.com. 172800 IN NS ns2.dnsbed.com.
;; ADDITIONAL SECTION:
ns1.dnsbed.com. 172800 IN A 74.117.233.4
ns2.dnsbed.com. 172800 IN A 204.152.196.108
;; Query time: 500 msec
;; SERVER: 192.5.6.30#53(192.5.6.30)
;; WHEN: Wed Aug 24 13:27:16 2011
;; MSG SIZE rcvd: 102
在这组名字服务器里抽出一台,去查询两个域名,一个是mydots.net,一个是llpop.com。
我们看到,同一台名字服务器对.net结尾的域名和.com结尾的域名都返回一个胶水记录,记录里包含了ADDITIONAL SECTION。这个ADDITIONAL SECTION很重要,它直接告诉权威名字服务器的IP地址给查询者,降低了互联网DNS的查询流量和频率。
如果com和net域使用不同的名字服务器,情况如何?
mydots.net使用ns7和ns8.dnsbed.com作为名字服务器,而dnsbed.com的名字服务器是注册在com域的,所以,net域的名字服务器,只会在AUTHORITY SECTION里返回ns7和ns8.dnsbed.com,而不会在ADDITIONAL SECTION返回它们的IP地址。其结果是解析器要再执行一次查询去获取这2个域名的IP地址。同理.com域名使用.net的名字服务器,也会发生这种情况。
虽然dnsbed.com的名字服务器只在com的NS注册,但net的NS也返回它的胶水记录,这个概念在社区里叫做“姐妹胶水(sibling glue)”。这也说明了名字服务器的域名,最好是.com或.net结尾的,因为互联网大多数域名是这2个后缀。名字服务器不是这2个结尾,除非你想办法把它注册到更高一级的ZONE(如“.”根域),其他.com、.net域名可能会拒绝使用这个DNS服务器。
补充说明的是:.info和.org域名也使用相同的一组名字服务器。
原来如此啊!豁然开朗!
原来里面还隐藏这么多道道,受教了,以后都用com、net域名!