DNS域名解析协议
一、DNS协议简介
DNS(Domin Name System)是一种分布式网络目录服务,主要用于域名与IP地址的相互转换,以及控制因特网的电子邮件的发送。IP地址可以唯一的标记一台主机,但是全世界的主机IP数不胜数,光靠记忆我们是无法全部记住所有的IP地址,所以用域名系统就可以将难以记忆的数字IP地址与容易记忆的域名建立映射关系。
那这种映射关系其实是保存在一个叫做hosts文件中。最初,通过互联网信息中心来管理这个文件,如果有一个新的计算机想要介入网络,或者某个计算机的IP变更都需要到信息中心申请变更host文件。但是这样太麻烦了,于是就出现了DNS系统。接下来我们了解下DNS域名的层次结构
二、域名的层次结构
以下的这个图片是博主觉得容易理解的域名层次结构(图侵删),相信大家应该多少都有了解。
顶级域名是域名的最后一个部分,即就是域名最后一点之后的字母,比如在http://example.com这个域名中,顶级域是.com(或者.COM),大小写视为相同。二级域名是域名的倒数第二个部分,在http://example.com中,二级域名是example。以此类推,级别最低的域名也在左边,级别最高的域名写在右边。
三、DNS域名服务器
开头我们提到原来使用host文件来保存IP地址和域名的映射关系,但是不方便,一个解决办法是DNS系统,那这里DNS域名服务器其实就是为了完成域名解析的任务。由于因特网的域名数量巨大,我们不可能将所有的域名信息都保存在一个域名服务器中,也不能将上述每个节点都采用一个域名服务器。在实际的公网DNS中,域名服务器采用划分区的方式来管理。
我举个简单的例子,如果说我们把域名空间结构中根比作国家,顶级域名比作省级行政单位,二级域名看作是市级单位,三级、四级看作是镇和乡,那么我们很快就能想到管辖国家是的是总理,管辖省级的单位是省长,下面还有市长镇长等。也就是说域名服务器也是对应的层级结构
所以由高向低进行层次划分,可分为这么几类:
四、域名解析的全过程
客户端打开浏览器输入www.baidu.com
- 此时客户端电脑便发出一个DNS请求到本地DNS服务器,进行递归查询,本地DNS服务器一般都是你的网络接入服务商提供,比如中国电信,中国移动。
- 查询www.baidu.com的DNS请求到达本地DNS服务器之后,本地服务器会首先查询它的缓存记录,如果缓存中由此条记录,就可以直接返回结果,如果没有,本地DNS服务器还要向DNS根服务器进行迭代查询
- 根DNS服务器没有记录具体的域名和IP的对应关系,而是告诉本地DNS服务器,你可以到顶级域名服务器上去查询,并给出顶级服务器的地址
- 本地DNS服务器继续向顶级服务器发出请求,在这个例子中,请求的对象是.com域服务器,.com域服务器收到请求之后,告诉本地服务器所查询的权限域名服务器的地址
- 最后,本地域名服务器向权限服务器进行查询,权限服务器告诉本队域名服务器所查询的主机的IP地址。本地DNS服务器不仅要把IP地址返回给客户电脑,还要把这个对应关系保存在缓存中,以便下次别的用户查询时,可以直接返回结果。
4.1 迭代查询和递归查询
(1)迭代查询:本地域名服务器向根域名服务器查询,根域名服务器告诉他下一次应该到哪里进行查询,然后它再去查,每次都是自己作为客户端不断去查询结果
(2)递归查询:本机向本地服务器发出一次查询请求,就静待查询结果,如果本地服务器无法完成解析,那本地服务器就会作为客户端向其他服务器查询,知道找到最终的IP地址。
总的来说迭代查询自己作为客户端亲力亲为,不断向其他服务器查询,需要查询很多次。而递归查询自己查询一次,其他的交给别人查询,等待别人告诉你查询结果。
(博主看了很多文章,觉得受益匪浅,本文也是参考了大佬关于DNS的解释整理出来的,人家思路很清晰,当然我这适合初学者先入个门,其他更有意思的还需要多加学习。有问题的希望指出)