本帖最后由 sunnystudy 于 2019-4-4 21:54 编辑
为什么13个DNS根服务器?
2013年11月10日
DNS
那么为什么(只)有13个root-nameservers?看下面的更新,这个方案在90年**始使用。
启动查询是名称服务器在启动以获取根名称服务器IP地址列表时执行的查询。这样做是为了验证(并可能更新)它拥有的地址的内置列表。在DNS的早期阶段,最大数据包大小设置为512字节,因此该列表需要适合512字节。
返回的消息看起来像这样。在这里,我只列出{a,b} .root-servers.net并删除一些现代功能AAAA和OPT记录。
;; QUESTION SECTION:
;. IN NS
;; ANSWER SECTION:
. 518400 IN NS a.root-servers.net.
. 518400 IN NS b.root-servers.net.
;; ADDITIONAL SECTION:
a.root-servers.net. 3600000 IN A 198.41.0.4
b.root-servers.net. 3600000 IN A 192.228.79.201
那么这个消息有多大?DNS包头是12个字节。问题部分的大小是:
root-label:00,1个字节;
class,2个字节和;
的qtype:2个字节。
总共5个字节。现在,答案部分中一个资源记录的大小为:
root-label:1个字节;
ttl: 4字节;
class:2个字节;
type:2个字节;
rdlength:2个字节
nameserver name:<1>a<12>root-servers<3>net<0>:20个字节。
总计:31个字节。其他记录可以采用DNS压缩,所以随后的记录具有root-label,ttl,class,type,rdlength和然后<1><letter><compression pointer>,这是4个字节,因此这涉及到:15个字节。
附加部分中的A记录来自:
nameserver name:<1>a<12>root-servers<3>net<0>:20个字节;
ttl: 4字节;
class:2个字节;
type:2个字节;
rdlength:2个字节;
address: 4字节。
但是这里的名称可以完全压缩,因此我们可以使用2个字节作为压缩指针,而不是20个字节。所以总共16个字节。数据包,但只有大小:
12 ;; ->>HEADER<<-
5 ;; QUESTION SECTION:
31 + 15n ;; ANSWER SECTION:
16m ;; ADDITIONAL SECTION:
通常m = n,因此等式变为:
48 + 31n = 512
n = 464 / 31 = 14.96
WTF,14,9?
更新1
根据@agercasa(Jaap Akkerhuis)的说法,比尔曼宁表示,他们希望保守,并为未来的扩张留出一些空间。
更新2
原始列表没有使用root-servers.net后缀,但无论如何都小于512字节。当列表被扩展时,root-servers.net创建后缀以节省空间(压缩)并使得可以具有14个根服务器,其中已经分配了13个。根据Bill Maning的说法,这比任播更早,因此需要大量的服务器:
...这比任播早,所以认为等待选择所有剩余的运营商是谨慎的。事实证明,调整并未按计划进行,VSGN有两个,ICANN有一个。最初的想法是在亚洲和南美洲的第二个运营商......
此外,从名称的混搭到具有共同后缀和512字节计算的步骤也是一步完成的。
更新3
@isomer 从BIND 4.9.2-940221中挖出了一个旧的根提示文件。
;
; This file holds the information on root name servers needed to
; initialize cache of Internet domain name servers
; (e.g. reference this file in the "cache . <file>"
; configuration file of BIND domain name servers).
;
; This file is made available by InterNIC registration services
; under anonymous FTP as
; file /domain/named.root
; on server FTP.RS.INTERNIC.NET
; -OR- under Gopher at RS.INTERNIC.NET
; under menu InterNIC Registration Services (NSI)
; submenu InterNIC Registration Archives
; file named.root
;
; last update: April 21, 1993
; related version of root zone: 930421
;. 99999999 IN NS NS.INTERNIC.NET.
NS.INTERNIC.NET. 99999999 A 198.41.0.4
. 99999999 NS KAVA.NISC.SRI.COM.
KAVA.NISC.SRI.COM. 99999999 A 192.33.33.24
. 99999999 NS C.NYSER.NET.
C.NYSER.NET. 99999999 A 192.33.4.12
. 99999999 NS TERP.UMD.EDU.
TERP.UMD.EDU. 99999999 A 128.8.10.90
. 99999999 NS NS.NASA.GOV.
NS.NASA.GOV. 99999999 A 128.102.16.10
99999999 A 192.52.195.10
. 99999999 NS NS.NIC.DDN.MIL.
NS.NIC.DDN.MIL. 99999999 A 192.112.36.4
. 99999999 NS AOS.ARL.ARMY.MIL.
AOS.ARL.ARMY.MIL. 99999999 A 128.63.4.82
99999999 A 192.5.25.82
. 99999999 NS NIC.NORDU.NET.
NIC.NORDU.NET. 99999999 A 192.36.148.17
|