但是这种巨型服务器的漏洞是肯定存在的,即使现今没有被发觉,以后也肯定会被发觉。
而即便被蓄意攻击者发觉并被成功运用的话,将会让整个互联网处于失明之中。
为什么只有13台dns根服务器
最后,让我们了解下全球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会话、一个查询包、一个响应包以及最后一次握手来关掉连结。