计算机网络 - DNS(Domain Name System)解析过程

1.为什么要采用DNS服务?

在应用层要访问目的主机时,不仅要指出该目的主机的网络层IP地址(用于网络寻址),还要指出在传输连接中使用的端口号,以及在应用层使用的应用协议。
虽然以上采用IP+端口号的方式没什么问题,但是对于全球范围来说的互联网
IP地址标识存在不足:
(1)不便记忆
(2)不方便地址变更

2. host文件名称解析方案

在引入DNS(1987年引入)之前的ARPANet(互联网的前身)中,通过一个称为host.txt的文本文件把网络中各计算机的计算机名称与其对应的IP地址一一列出,以此实现解析。

但是也存在不足:
(1)名称冲突在所难免
(2)少数名称解析服务器难以承受

3. DNS名称解析方案

为了解决host文件名称解析方案中的不足,DNS提出了基于域的分层命名方案

在分层结构的DNS域名中,必须有一个是顶级域名,然后在这个顶级域名下面再申请,或者注册二级、三级,甚至更多级别的域名,各级域名间同样是以小圆点(.)分隔、连接的。

最右边的部分代表的是顶级域名,左边部分代表的是子域名,而且是级别最低的域名写在最前面,级别最高的域名写在最后面。

DNS的顶级域名是. .只是平时不写出来而已

3.1 DNS名称空间

域名是不区分大小写的
在这里插入图片描述
目前,互联网上注册的DNS域名主要有以下3个级别:顶级域名、二级域名和三级域名,其中只有二级及其以下级别的域名才可由用户自己申请,用户不能直接申请顶级域名。

在这里插入图片描述

3.2 DNS名称服务器种类

(1)根名称服务器

“根名称服务器”(root name server)是由互联网管理机构配置建立的,是最高层次的名称服务器,负责对互联网上所有“顶级名称服务器”进行管理,有全部的顶级名称服务器的IP地址和域名映射。

根名称服务器并不直接用于名称解析,因为这些根名称服务器上也没有保存全部的互联网域名记录(仅有负责管理顶级域名的顶级名称服务器的相关记录)。根名称服务器的作用是仅当用户本地名称服务器解析不了某个顶级域名时,告诉本地名称服务器去找哪个顶级名称服务器。

(2)顶级名称服务器

“顶级名称服务器”(top level name server)是各顶级域名自己的名称服务器,负责它们各自所管理的二级域名解析。

(3)权威名称服务器

“权威名称服务器”(authoritative name server)是针对前面所说的DNS区域提供名称解析服务而专门配置、建立的名称服务器,可为用户提供最权威的DNS域名解析。

(4)本地名称服务器

这里所说的“本地名称服务器”不是指用户局域网中的名称服务器,而是用户端操作系统所配置的、由本地ISP提供的名称服务器(也就是本地DNS服务器)。它是离用户最近的互联网名称服务器。用户发出的DNS域名解析请求,首先到达的就是本地名称服务器。

4. DNS解析方式

4.1 DNS递归解析基本流程

1)客户端向本机配置的本地名称服务器(在此仅以首选DNS服务器为例进行介绍,所配置的其他备用DNS服务器的解析流程也完全一样)发出DNS域名查询请求。

2)本地名称服务器收到请求后,先查询本地的缓存,如果有该域名的记录项,则本地名称服务器直接把查询的结果返回给客户端;如果本地缓存中没有该域名的记录,则本地名称服务器再以DNS客户端的角色发送与前面一样的DNS域名查询请求给根名称服务器。

3)根名称服务器收到DNS请求后,把查询到的所请求的DNS域名中顶级域名所对应的顶级名称服务器地址返回给本地名称服务器。

4)本地名称服务器根据根名称服务器返回的顶级名称服务器地址,向对应的顶级名称服务器发送与前面一样的DNS域名查询请求。

5)对应的顶级名称服务器在收到DNS查询请求后,也是先查询自己的缓存,如果有所请求的DNS域名的记录项,则先把对应的记录项返回给本地名称服务器,然后再由本地名称服务器返回给DNS客户端,否则向本地名称服务器返回所请求的DNS域名中的二级域名所对应的二级名称服务器地址。

在这里插入图片描述

4.2 DNS迭代解析基本流程

1)客户端向本机配置的本地名称服务器(在此仅以首选DNS服务器为例进行介绍,其他备用DNS服务器的解析流程也完全一样)发出DNS域名查询请求。

2)本地名称服务器收到请求后,先查询本地的缓存,如果有该域名的记录项,则本地名称服务器直接把查询的结果返回给客户端;如果本地缓存中没有该域名的记录,则向DNS客户端返回一条DNS应答报文,报文中会给出一些参考信息,如本地名称服务器上的根名称服务器地址等。

3)DNS客户端在收到本地名称服务器的应答报文后,会根据其中的根名称服务器地址信息,向对应的根名称服务器再次发出与前面一样的DNS查询请求报文。

4)根名称服务器在收到DNS查询请求报文后,通过查询自己的DNS数据库得到请求DNS域名中顶级域名所对应的顶级名称服务器信息,然后以一条DNS应答报文返回给DNS客户端。

5)DNS客户端根据来自根名称服务器应答报文中的对应顶级名称服务器地址信息,向该顶级名称服务器发出与前面一样的DNS查询请求报文。

6)顶级名称服务器在收到DNS查询请求后,先查询自己的缓存,如果有所请求的DNS域名的记录项,则把对应的记录项返回给DNS客户端,否则通过查询后把对应域名中二级域名所对应的二级名称服务器地址信息以一条DNS应答报文返回给DNS客户端。

然后,DNS客户端继续按照前面介绍的方法一次次地向三级、四级名称服务器查询,直到最终的权威名称服务器返回最终的记录。

在这里插入图片描述

5. 相关问题

从输入URL到浏览器显示页面发生了什么?

参考

解析顺序:
1) 浏览器缓存

当用户通过浏览器访问某域名时,浏览器首先会在自己的缓存中查找是否有该域名对应的IP地址(若曾经访问过该域名且没有清空缓存便存在);

2) 系统缓存

当浏览器缓存中无域名对应IP则会自动检查用户计算机系统Hosts文件DNS缓存是否有该域名对应IP;

3) 路由器缓存

当浏览器及系统缓存中均无域名对应IP则进入路由器缓存中检查,以上三步均为客服端的DNS缓存;

4) ISP(互联网服务提供商)DNS缓存

当在用户客服端查找不到域名对应IP地址,则将进入ISP DNS缓存中进行查询。比如你用的是电信的网络,则会进入电信的DNS缓存服务器中进行查找;

5) 根域名服务器

当以上均未完成,则进入根服务器进行查询。全球仅有13台根域名服务器,1个主根域名服务器,其余12为辅根域名服务器。根域名收到请求后会查看区域文件记录,若无则将其管辖范围内顶级域名(如.com)服务器IP告诉本地DNS服务器;

6) 顶级域名服务器

顶级域名服务器收到请求后查看区域文件记录,若无则将其管辖范围内主域名服务器的IP地址告诉本地DNS服务器;

7) 主域名服务器

主域名服务器接受到请求后查询自己的缓存,如果没有则进入下一级域名服务器进行查找,并重复该步骤直至找到正确纪录;

8)保存结果至缓存

本地域名服务器把返回的结果保存到缓存,以备下一次使用,同时将该结果反馈给客户端,客户端通过这个IP地址与web服务器建立链接。

原理部分来自 深入理解计算机网络

  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值