全球只有13台DNS根域名服务器的原因

根域名服务器负责返回顶级域名(如:.com)的域名服务器地址,是互联网域名解析系统(DNS)中最高级别的域名服务器。

所有根域名服务器返回同一份根域文件,文件大小550KB,共记录了258个顶级域和773个顶级域权威服务器,未被收录的顶级域,无法通过根域名服务器查出对应的权威服务器。

全球目前有5百多台根服务器,分别用A到M的编号进行标记,13组根域名服务器以英文字母 A到M依序命名,网域名称格式为“字母.root-servers.org”。

其中11个以任播(Anycast)网络在全球多个地点设立镜像站,抵抗分布式拒绝服务攻击(DDoS),编号相同的根服务器共享同一个IP,根服务器共有13个IP。

从技术上看DNS根域名服务器并不真的只有13台,只是共享13个IP,1个为主根服务器在美国,其他12个为辅助根服务器,其中9个放在美国,欧洲2个位于英国和瑞典,亚洲1个在日本。

这13台根服务器能够控制Chrome、Edge、Firefox等浏览器和电子邮件的通信。自成立以来,每年花费近50多亿美元用于根服务器的维护和运行

13个IP的由来

DNS协议定义要从上世纪80年代未期算起,使用UDP和TCP协议。

UDP通常用于查询和响应,TCP用于主服务器和从服务器间的传送。所有UDP的实现中能保证正常工作的最大数据包是512个字节,对于必须包含数字签名的DNS来说显得太小了。

512字节的限制影响了根服务器的数量和命名,要让所有根服务器数据都能包含在一个512字节的UDP包中,只能限制服务器的数量,而每个服务器只能使用单字母命名。

题外话

以太网的物理特性决定了以太网数据长度须在46-1500字节之间,1500字节的长度限制是网络层IP数据包的限制,IP数据包理论上最大长度是65535字节。

在数据传输中,UDP数据长度控制在576 字节(Internet 标准 MTU 值),许多UDP应用程序设计中数据包被限制为512个字节或更小,防止数据丢包。

解析器首先发送一条UDP查询,如果接收到的数据是被截断的,则用TCP重新发起查询,绕过512字节的限制。

关于UDP的优势可以参考HTTP/3的实现说明。