域名系统(DNS)简介

域名系统(Domain Name System, DNS)实现了域名到IP地址转换的功能,可以帮助人们方便的方便互联网系统。

全世界域名的管理由互联网名称与数字地址分配机构(The Internet Corporation for Assigned Names and Numbers, ICANN)进行。ICANN原本是美国商务部下的一个非营利组织,但在2016年不再属于商务部,成为独立机构。它负责管理全世界的域名系统的运作,主要工作就是规定顶级域名(Top Level Domain, TLD)

TLD是指域名的最后一部分,例如网站chenxiyuan.fun的最后一部分fun就是顶级域名,ICANN可以规定哪些字符串可以作为顶级域名。顶级域名可以分为一般性域名(gTLD)如.com.org.net和国别顶级域名(ccTLD)如.cn.io.cc。现有的顶级域名有上千种,列表可参考NameBeta

上千的顶级域名下面还会有成千上万的二级域名,单纯靠ICANN很难管理,因此这些顶级域名下的具体管理政策都会交给一些委托商来进行,委托商通过管理顶级域名获利。

根域名和DNS服务器

ICANN对所有顶级域名进行管理,因此存在一个最高级的域——根域名,有时候一个域名后面会跟一个.,这个点就是根域名。ICANN需要告诉外界各个顶级域名去找哪个委托商处理,因此ICANN需要搭建服务器提供根域名查询服务,提供根域名列表,列出各个根域名对应的委托商的服务器,这个列表叫DNS根区(DNS root zone)(点击根区文件查看)。。

保存根区文件的服务器就叫根域名服务器,由于早期网络传输限制,一个DNS查询结果最多可以容纳13个地址,因此就规定最多13个根域名服务器\[a-m\].root-servers.net。这13台根域名服务器由12个组织独立运营,为保证根节点服务器的稳定,都会采用分布式的形式部署,因此根域名服务器不是只有13台。全世界的根域名服务器可以在https://root-servers.org/查看。一般根区文件变化很少,因此本地计算机、本地DNS服务器都会对根区文件缓存,所以根域名服务器的压力并不是很大。

各个顶级域名委托商运行的服务器叫顶级域名服务器,顶级域名服务器为其所属的顶级域名提供解析服务,它可以直接提供解析结果,也可能指示前往下一级域名的域名服务。例如xxx.yyy.zzzyyy.zzz可能会有自己的服务器管理自己的域名,因此zzz顶级域名服务器会给查询者提供yyy.zzz的服务器地址,让查询者访问yyy.zzz的服务器去查询。这些子域名的服务器由子域名的持有者进行控制,叫权限域名服务器。

此外还有本地DNS服务器,本地DNS服务器为域名提供缓存服务器,计算机本地所填写的DNS服务器都是本地DNS服务器如114.114.114.1148.8.8.8等等。当接收到查询本地DNS服务器会先查询自己的缓存,如果有缓存则直接返回,如果没有就根据查询域名的层级,从根域名一步步向下查找获得目标域名对应的地址。

DNS查询

当计算机需要查询一个域名的DNS时,会先查询自身的DNS缓存,如果没有命中则向本地DNS服务器查询。如果本地DNS服务器也没有,那么计算机就会向本地DNS服务器一样从根域名开始查起,如果还没有则DNS查询失败。

参考资料

ICANN

NameBeta——TLD列表

阮一峰——根域名的知识

END

2020-08-15 完成

2020-08-14 立项