您的位置:首页 > 其它

为何根域名服务器只有13个?

2019-09-23 08:30 1461 查看
来自公众号:车小胖谈网络
两个月之前更新文章曾经说过,过一段时间会更新最终版。这篇文章是献给一直关注公众号的忠实读者一份福利,请尽快阅读!
熟悉DNS域名解析的同学应该知道,当主机想访问某个网站时,会使用本机配置的DNS服务器来将网站的域名解析成IP地址。获得了网站的IP地址,就可以使用IP报文与服务器进行通信了。
 
Q1: 主机是如何知道DNS服务器IP地址的?
 
这个问题难不住大家,一般是通过DHCP动态获得,或者手工配置获得。
 
Q2: DNS服务器如何知道网站域名、IP地址的映射关系?
 
DNS服务器上通常也配置有自己的DNS服务器,为了区别起见,称后者为“树干DNS服务器”,前者为“叶子DNS服务器”
 
Q3: 树干DNS服务器天生就知道“网站域名、IP地址的映射关系”答案吗?
 
这里的天生是指,当树干DNS服务器从上电启动,完成DNS进程加载,这个时候树干DNS服务器如初生的婴儿,大脑一片空白。需要告诉这个小婴儿,一旦遇到不会的DNS查询问题,需要去求助大神,这个大神的名字就叫“树根DNS服务器”!
 
DNS查询原理
互联网的DNS域名查询系统如同一棵树一样,叶子问主干,主干问根,根将一级主干返回给主干,主干问一级主干,一级主干将结果返回给主干,主干将结果返回给叶子,叶子将最终查询结果返回给主机!
 

Q4: 小婴儿(树干DNS服务器)如何找到大神呢?
 
如果婴儿事先知道大神的IP地址,不就可以找到了吗?这个主意很好!
只要让小婴儿在初始化DNS进程时,读取这个配置文件,这个配置文件提供了大神的联系方式。大神的名字分别为:A、B、C、D、E、F、G、H、I、J、K、L、M,一共13个大神。以及13个大神对应的IPv4、IPv6地址。如下图所示,该图受限于屏幕尺寸,不能囊括13个大神完整的信息,有兴趣的同学可以前往下载(http://www.internic.net/domain/named.root)。
 

到目前为止,小婴儿已经获得了13位大神的联系方式,可以求助任意一位大神来回答DNS查询问题,然后再把DNS查询答案告诉叶子DNS服务器。这个故事到这里仿佛要结束了。。。

但是有一个问题,婴儿的配置文件是一个静态文件,不是实时更新的!如果其中有些大神的IP地址发生了变动,那么意味着婴儿拿着过期的配置信息,可能找不到大神!


婴儿一旦读取配置文件完成初始化,需要立马去任意一位大神,更新13位大神的实时联系方式!好累,终于讲到本文的主题了!

婴儿需要向大神发送DNS NS(Name Server) Query,大神将返回13位大神的实时联系方式,如下图所示,受限于图片尺寸,图中只包括A、B大神。他们的全名分别为“a.root-servers.net.”、 “b.root-servers.net.”


Q5: 每一个大神的联系方式占据多大的尺寸呢?
 
如下图所示,每一个大神占据的字节数 = 1 + 4 + 2 +2 + 2 + 20 = 31 个字节
 
13位大神一共占据的字节数= 13 * 31 = 403 个字节!由于运输DNS查询结果的是UDP,由于历史原因,UDP被IETF限制最大发送尺寸为512字节。留给DNS其它协议字段的空间只有512-403 = 109个字节,这109个字节用来运输DNS其它协议字段,最终剩下几十个字节的空闲空间,足够容纳第14位大神。但是,IETF最终决定不再加入新的大神,空闲的空间保留给DNS协议的扩展!
 
需要指出的是,13位大神并不意味13个物理服务器,而是13个IP地址。每个IP地址都有几十甚至上百台物理服务器同时提供服务,记得6月份更新文章时,全球只有999实例(Instance),到今天已经扩容到1011个实例了。
 
关于为何IETF要限制UDP的最大报文发送尺寸,请参阅这篇文章


●编号951,输入编号直达本文

●输入m获取文章

推荐↓↓↓

Web开

内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: 
相关文章推荐