[PConline 杂谈]域名系统,也就是我们口中常说的DNS,可以将域名和IP地址相互映射,省去了记住IP数串的麻烦,从而让人们更方便快捷的访问互联网。对于DNS想必各位都已非常熟悉,但是它是由谁发明并设计出来的,你真的了解吗?
域名系统通常被称为互联网的“电话簿”,是互联网基础设施的基本组成部分。在互联网的早期,主机和IP地址信息储存在斯坦福研究院维护的一个文本文件HOSTS.TXT 中,当一台新计算机加入到网络或一台旧电脑修改了它的资料,人们需要联系斯坦福研究院,让他们手动更新文件。
不仅如此,若想知道一台计算机的IP地址,也需要联系斯坦福研究院。重要的是,每个工作日的下午五点就会关闭,而且节假日不开放,可以说非常的不方便。
为此,当时还在南加州大学工作的Paul Mockapetris博士发明和设计了DNS系统,通过利用分布式数据库来解决这个问题,主要作用是转换我们可读的主机名,例如www.welcometothejungle.com,转换成机器可读的IP地址52.211.16.159。
Mockapetris博士表示,虽然DNS系统设计的非常灵活,但顶级域名本身更像是各国政治间的一场博弈。有人说域名系统并不完美,因为它存在很多安全漏洞,如欺骗、DDoS攻击等等。对于这个说法,Mockapetris博士解释称DNS设计的不安全是有意为之,当时的首要问题是尽快让人们接受分布式系统这个概念。
域名解析体系第一层就是根服务器,负责管理世界各国的域名信息,在根服务器下面是顶级域名服务器,也就是相关国家域名管理机构的数据库,然后是下一级的域名数据库和ISP的缓存服务器。我国普通网民在访问带有.com等后缀的国外网站时,大多需要经过国外的域名服务器进行解析。
那么,根DNS服务器有什么作用呢?根域名服务器中没有每个域名的具体信息,储存的是负责每个域的解析的域名服务器的地址信息,根域名服务器是架构因特网所必须的基础设施。
都知道全世界只有13台根域名服务器,但你知道为什么只有13台吗?这还得从DNS的协议说起,DNS使用的是端口UDP和TCP协议。所有UDP实现中能保证正常工作的最大包长是512字节,这512字节限制了根服务器的数量和名字。要让所有的根服务器数据能包含在一个512字节的UDP包中,根服务器只能限制在13个。
能不能自己搭建根服务器?实际上,在去年12月份左右,俄罗斯宣布正在建设一个主权内部网,重建DNS基础设施,对此Mockapetris博士表示技术本身并不难,俄罗斯可以使用开源DNS来实现他们的想法。但从商业角度来看,对外连接仍然是重要的,即使是“防火墙”也并没有切断连接,而只是寻求控制。
此外,另一个值得我们关注的是,现在各国都在加速部署IPv6,那么DNS是否会因过渡到IPv6而受到影响呢?想必这也是很多人所担心问题。实际上,DNS可以处理任何类型的IP并且不会丢失域。目前的问题不是缺乏域,而是对某些特定域的需求,就好像每个人都想搬到A城市,但不是每个人都能搬进来一样。