在应用层除了我们上篇说过的HTTP协议外,还有我们的DNS称为域名解析协议。那么何为域名系统,为什么要出现这个东西,它又是如何进行地址解析的呢等等,我们这篇来进行介绍。
目录
一、DNS域名系统
1、出现原因
用户与互联网上某台主机进行通信时,必须要知道对方的IP地址。然而对于用户而言要去记长达32位的二进制主机地址是很困难的,也是用户不愿意去做的事情。即使是换成点分十进制IP地址也并不太容易记得。所以应用层为了方便用户记忆各种网络应用,连接在互联网上的主机不仅有IP地址还有便于用户记忆的主机名称。域名系统能够将互联网上的主机名称转换成IP地址。
2、概念
域名系统DNS(Domain Name Syatem)是互联网使用的命名系统,用来把便于人们方便使用的机器名字转换为IP地址。域名系统又称为名字系统。
二、互联网的域名结构
互联网的域名系统被设计为一个联机分布式数据库系统,并采用客户服务器方式。DNS使大多数名字都在本地进行解析,仅少量解析需要在互联网上通信,因此DNS系统的效率很高。
互联网采用的是层次树状结构的命名方法。采用这种命名方法,任何一个连接在互联网上的主机或路由器,都有一个唯一的层次结构的名词,即域名。这里的“域”是名字空间中一个可以被管理的划分,域还可以划分为子域,而子域还可以继续划分为子域的子域,这样就形成了顶级域、二级域、三级域等等。
从语法上看,每一个域名都由标号序列组成,而各标号之间用点隔开,是小数点。例如:mail.cctv.com
域名的分类:
(1)国家顶级域名nTLD;例如:cn表中国;us表美国,uk表英国等;
(2)通用顶级域名gTLD;例如:com表公司企业;aero表航空运输企业;net网络服务机构;edu美国专用的教育机构;mil美国的军事机构等;
(3)基础结构域名(infrastructure domain):只有一个arpa用于反向域名解析;
如下图是互联网的域名空间:
三、域名服务器
上面所阐述的域名体系是抽象的,但具体的是瞎按域名系统则是使用分布式在各地的域名服务器。
一个服务器所管辖的范围叫做“区”。各单位根据具体情况来划分自己管辖的区。但在一个区中的所有节点必须是能够连通的。每一个区设置响应的权限域名服务器,用来保存该区中的所有主机的域名到IP地址的映射。如下图是树状结构的DNS域名服务器:
(1)根域名服务器:是最高层次的域名服务器,也是最重要德尔。
(2)顶级域名服务器:这些域名服务器负责管理在该顶级域名服务器注册的所有二级域名。
(3)权限域名服务器:这就是负责一个区的域名服务器。
(4)本地域名服务器:本地域名服务器并不属于上述图所示的域名服务器的层次结构,但它对域名系统非常重要。
四、域名的解析过程
域名解析有两种方式,一是递归式二是迭代式。
(一)递归查询
如果主机所询问的本地域名服务器不知道被查询域名的IP地址爱,那么本地域名服务器就以DNS客户的身份,向其他根域名服务器继续发出查询请求报文(即替该主机继续查询),而不是让该主机自己进行下一步查询。因此,递归查询返回的查询结果或者是所要查询的IP地址,或是报错,表示无法查询到所需的IP地址。
(二)迭代式
当根域名服务器收到本地域名服务器发出的迭代查询请求报文时,要么给出所要查询的IP地址,要么告诉本地域名服务器:“你下一步应当向哪一个域名服务器进行查询”。然后让本地域名服务器进行后续的查询(而不是替本地域名服务器进行后续查询请求)。根域名服务器通常是把自己知道的顶级域名服务器的IP地址告诉本地域名服务器,让本地城名服务器再向顶级域名服务器查询。顶级域名服务器在收到本地域名服务器的查询请求后,要么给出所要查询的IP地址,要么告诉本地域名服务器下步应当向哪一个权限城名服务器进行查询,本地域名服务器就这样进行迭代查询。最后,知道了所要解析的城名的IP地址,然后把这个结果返回给发起查询的主机。当然,本地城名服务器也可以采用递归查询。这取决于最初的查询请求报文的设置是要求使用哪种查询方式。
参考书籍:《计算机网络》第七版 谢希仁