1. DNS域名空间

如果网络规模较小,那么使用hosts文件是一个非常简单的解决方案,但对于目前已经包括有几十亿台主机的Internet,hosts文件很明显无法满足要求。所以在Internet中才又引入了DNS系统,它的工作机制相比hosts要复杂、高效得多。

DNS系统采用的是分布式的解析方案,整个DNS架构是一种层次树状结构,这个树状结构称为DNS域名空间。

DNS基础知识_第1张图片

 在这个树状结构的最顶层称为根域,根域用“·”表示,相应的服务器称为根服务器,互联网管理委员会规定,整个域名空间的解析权都归根服务器所有,也就是说根服务器对互联网上所有的域名都享有完全的解析权!同时为了减轻根服务器的压力,又采用了一种“委派”机制,将位于根域下一层的顶级域分别委派给不同的顶级域服务器进行解析。
如根服务器把com域的域名解析权委派给com域服务器,以后凡是接收到以com结尾的域名解析请求,根服务器都会转发给com域服务器,由它对域名进行解析。
由根服务器委派的域名主要有:net、org、edu、gov、cn、uk……,这些被根服务器委派的域名称为顶级域名。
每个顶级域名都有预设的用途,例如com域名用于商业公司,edu域名用于教育机构,gov域名用于政府机关等等,这种顶级域名也被称为顶级机构域名。根服务器还针对不同国家进行了域名委派,例如把所有以cn结尾的域名委派给中国互联网管理中心,以uk结尾的域名委派给英国互联网管理中心,cn、uk这些顶级域名被称为顶级地理域名。
每个被委派的域名服务器再同样使用委派的方式向下发展,例如中国互联网管理中心在.cn顶级域名下面又设置了一些二级域名:.com.cn、.net.cn、.edu.cn……,并将这些二级域名的解析权委派给相应的服务器。

当一个公司或个人要申请域名时,就得去这些顶级或者二级域名服务器那里进行注册。例如新浪公司想申请使用sina.com.cn域名,这时新浪就要向负责.com.cn域名的DNS服务器提出申请,只要sina.com.cn还没有被其他公司或个人使用,而且申请者按时足额缴纳了费用,负责.com.cn域名的服务器就会把sina.com.cn这个域名委派到新浪公司自己的DNS服务器上。

这样通过层层委派,就逐步形成了现有的这种分布式的域名空间架构。这种架构把域名解析权最终下放到各公司自己的DNS服务器上,这样既有利于及时更新记录,同时对平衡流量压力也很有好处。

对于有些公司虽然注册了域名,但是并不希望花费财力来架设DNS服务器进行域名解析,这时可以将域名解析权委托给一些域名服务提供商,由其代为解析。如万网就是一家国内著名的域名服务提供商。

2. DNS域名结构

 在DNS这种层次树状域名空间中,每一层都有不同的含义和相应的表示方法。

(1)对于最顶层的根域(root),一般用一个“.”表示。

(2)顶级域,直接处于根域下层,由根域对其进行委派,一般代表一种类型的组织机构或国家地区。

按使用范围不同,顶级域分为三种类型:
     国际通用的顶级域名,包括net、com、org。

     美国专用的顶级域名,包括edu、gov、mil等

     国家或地区顶级域名,包括cn、jp、hk、uk等

世界上所有国家的组织或个人都可以在国际通用顶级域名下面注册,而美国专用的顶级域名则只有美国的组织或个人可以使用,国家顶级域名则为每个国家所专有,只有该国的组织或个人可在其下面注册。

(3)二级域,在顶级域下面,由顶级域对其进行委派,用来标明顶级域内的一个特定的组织。

在Internet中,顶级域和二级域都由ICANN(互联网名称与数字地址分配机构)负责管理和维护,以保证它们的唯一性。国家顶级域名下面的二级域名则是由所在国家的网络部门统一管理的。

(4)子域,在二级域的下面所创建的域,可以由各个组织或用户自由申请注册。

(5)主机,是域名空间的最下面一层,也就是一台具体主机的计算机名。

如上图中的www、mail都是具体的计算机的名字,我们可以用www.xxx.com、mail.xxx.com来表示它们,这种表示方式称为FQDN名(完全合格域名),也就是这台主机在域中的全名。我们平时上网时所输入的网址也都是一些FQDN名,如www.sina.com.cn,这其实是表示我们要访问“sina.com.cn”域中一台名为“www”的计算机。DNS的作用就是将每个域中的FQDN名解析为这些计算机所对应的IP地址,以使用户可以通过名字访问它们。

 

3. DNS名称解析的方式

 

在DNS这种分布式的体系结构中,DNS服务器如何进行域名解析呢?比如一台客户机想要访问网站www.benet.com.cn,整个DNS解析的过程如下图所示。

DNS基础知识_第2张图片

客户机首先把解析请求发送到自己的本地域名服务器上,如果这台DNS服务器中正好有这个名字所对应的IP,那就可以直接将结果发回给客户机。如果服务器中没有相关记录,那就得展开下面的一系列求助过程。
首先他要把这个域名发送到根服务器去请求解析,根服务器发现这个域名是以cn结尾的,于是告诉查询者这个域名应该询问负责cn的DNS服务器。这时查询者会转而向负责cn的域名服务器发出查询请求,负责cn域名的服务器发现域名是以com.cn结尾,就将负责com.cn的DNS服务器发给查询者。查询者只能再向com.cn服务器发出查询请求,com.cn服务器回答说“www.benet.com.cn”是以benet.com.cn结尾的域名,以benet.com.cn结尾的域名已经被委派到DNS服务器benet.com.cn了,因此这个域名的解析应该去问他。于是查询者最后向benet.com.cn服务器发出查询请求,这次应该可以如愿以偿了,benet.com.cn服务器会告诉查询者所需要的答案,查询者拿到这个答案后,会把这个查询结果放入自己的缓存中,如果在缓存的有效期内有其他DNS客户再次请求这个域名,DNS服务器就会利用自己缓存中的结果响应用户,而不用再去根服务器那里跑一趟了。

在上面的名称解析的过程中,分别用到了两种不同类型的查询,分别是客户机和本地DNS服务器之间的递归查询以及DNS服务器与服务器之间的迭代查询。

  • 递归查询:客户端计算机和DNS服务器之间都是采用递归查询,客户端得到结果只能是成功或失败 。 

  • 迭代查询:DNS服务器与服务器之间进行的查询。从根服务器开始逐级往下查询,直至找到最佳结果。

在迭代查询的过程中,根服务器非常重要,从理论上来讲,如果根服务器全部崩溃,那么整个互联网也将瘫痪。在已安装好的DNS服务器的属性设置中有一项“根提示”,即是一项允许本地DNS服务器查询根DNS服务器的功能,其中列出了13台根服务器的地址。对于Internet,这13台根服务器至关重要,所以为了提高安全性,这些根服务器分别部署在不同的国家,其中10台设置在美国,另外分别各有一台设置于英国、瑞典和日本。

DNS基础知识_第3张图片