最后,让我们了解下全球DNS根服务器为什么只有13台。
DNS协议的最初定义要从20世纪80年代未期开始算起,它使用了端口上的UDP和TCP协议。
UDP通常用于查询和响应,TCP用于主服务器和从服务器之间的区传送.遗憾的是,在所有UDP实现中能保证正常工作的最大包长是512字节,对于在每个包中必须含有数字签名的一些DNS新特性(例如,DNSSEC)来说实在是太小了。
512字节的限制还影响了根服务器的数量和名字。
要让所有的根服务器数据能包含在一个512字节的UDP包中,根服务器只能限制在13个,而每个服务器要使用字母表中的单个字母命名。
以太网数据的长度必须在46-1500字节之间,这是由以太网的物理特性决定的。
事实上,这个1500字节就是网络层IP数据包的长度限制,理论上,IP数据包最大长度是65535字节。
这是由IP首部16比特总长度所限制的,去除20字节IP首部和8个字节UDP首部,UDP数据包中数据最大长度为65507字节。
在Internet数据传输中,UDP数据长度控制在576字节(Internet标准MTU值),而在许多UDP应用程序设计中数据包被限制成512字节或更小。这样可以防止数据包的丢失。
许多解析器首先发送一条UDP查询,如果它们接收到一条被截断的响应,则会用TCP重新发送该查询。
这个过程绕过了512字节的限制,但是效率不高。您或许认为DNS应该避开UDP,总是使用TCP,但是TCP连接的开销大得多。
一次UDP名字服务器交换可以短到两个包:一个查询包、一个响应包。一次TCP交换则至少包含7个包:三次握手初始化TCP会话、一个查询包、一个响应包以及最后一次握手来关闭连接。
总结:
DNS协议使用了端口上的UDP和TCP协议,由于TCP开销太大(一次UDP数据交互可以短到两个包,而TCP要7个包,三次握手),而UDP最大数据包长是512个字节。512个字节要存根服务器信息,也只能存13台。
看英文维基百科上的说法,只有13个DNS根服务器是因为UDP包大小的限制。但是强调一点,一般说的13个根DNS服务器,指的是逻辑上有13个,而不是物理上13个服务器。实际上,截至2014年1月25日,物理上有386个根服务器(其中中国大陆有2台(全在北京),香港有6台)。它们通过任播技术与13个逻辑服务器对应。参见:http://www.root-servers.org/欢迎分享,转载请注明来源:夏雨云
评论列表(0条)