之前为了做一个分享,查了很多DNS相关的信息, 发现绝大多数关于根域名服务器的数量的说法都是错的。
第一个说法是根域名服务器只有13台,首先就不止13台,现在实际上有一千多台。另一个说法是根域名只能有13个,因为DNS报文长度的限制导致了只能有13个,实际上这个也是错了,即使是早期未拓展的DNS报文,最长也是可以有15个的。
可以通过命令 dig +trace segmentfault.com 来查询了解到DNS的解析过程,最先请求的就是根域名了
根域名就是 a~m.root-servers.net. 这13个就是根域名了,然后下面那一列就是根域名对应的服务器IP。
我感觉所有的DNS服务器应该都是带上了这几个根域名的,DNS的解析过程大致如图:
先请求下自己拿到根域名,然后再去根域名那拿到顶级域名DNS服务器。
虽然只有13个IP,但实际上背后是有上千台服务器的,甚至于没有人知道到底有多少台根域名服务器,因为你自己架设一个也是没有问题的。
根域名服务器是采用任播(Anycast)技术部署的,各个地区都可以用一台服务器共享这个IP,接受DNS的请求。
任播技术的文档不是很多,涉及到BGP,AS号段等知识,我也不是特别懂,所以这里就不多加以介绍了。
另外其实是可以有15个根域名的,如下图的DNS报文说明
当年规定了所有的IPv4设备都必须能接受最小576byte的数据包,然后IP报文的头部占了20字节,UDP头部占8字节,DNS信息占512字节,剩余36字节做预留。而这512字节,实际上也是可以容纳15个根域名的。
**粗体** _斜体_ [链接](http://example.com) `代码` - 列表 > 引用
。你还可以使用@
来通知其他用户。