DNS 解析顺序是怎样的?

1、DNS 解析过程

当客户端对域名发起访问时,会将解析请求发送给递归解析服务器,递归服务器会代替客户端进行全球递归查询。

首先递归服务器会请求根域名服务器,根域名服务器根据域名后缀,告知对应的顶级域名服务器;递归服务器再向顶级服务器发起请求,顶级域名服务器告知对应的权威服务器;递归服务器向权威服务器发起请求,权威服务器告知解析结果;递归服务器将结果告知客户端,客户端完成访问。

2、DNS 缓存

以上是 DNS 解析的标准流程,但是由于各种 DNS 缓存的存在,导致 DNS 解析环节更为复杂。

所谓 DNS 缓存是指 DNS 返回正确的 IP 地址之后,系统会将这个结果临时储存起来,并为缓存设定一个失效时间(TTL 值),在TTL失效前,当再次访问这个网站,系统就会直接从 DNS 缓存中将结果返回,而不必再次委托递归服务器进行全球解析查询,加快了 DNS 解析的流程。

当然TTL值失效后,系统还会自动再次询问DNS服务器以获取最新的解析结果。

3、DNS 缓存分类

(1)浏览器 DNS 缓存:浏览器会根据一定频率缓存 DNS 记录;

(2)本地 DNS 缓存:如果浏览器缓存中找不到解析记录,就会去询问操作系统中的缓存;

(3)本地 HOSTS 文件:HOSTS 是记录域名与 IP 地址一一映射关系的本地文件。

Windows 系统中位于C:\Windows\System32\drivers\etc;

Linux 系统中位于 /etc/hosts

(4)路由器 DNS 缓存:我们常用的路由器也带有自动缓存功能,路由器 DNS 被篡改会造成域名劫持,将访问网址定位到另外一个服务器;

(5)递归服务器缓存:递归服务器在将解析结果告知客户端的同时,将记录缓存下来,当下次请求同一个域名时,直接会将记录返回,而无需再进行全球查询。

4、DNS 解析顺序

DNS 解析顺序是“先查缓存,再递归解析”,查询顺序为:浏览器缓存 --> 系统缓存 --> 路由器缓存--> 递归服务器缓存 --> 递归查询

我们以 www.example.com 这个域名为例进行查询,具体流程如下:

 

(1)搜索浏览器自带的 DNS 缓存

当收到访问请求后,浏览器首先会查询浏览器自身的 DNS 缓存,这个缓存时间比较短(chrome://net-internals/#dns 这里可以查询缓存的dns记录),且只能容纳 1000条缓存,如果缓存中有对应条目,返回结果,解析到此结束。

(2)查询操作系统缓存和 hosts 本地文件

如果浏览器缓存中没有找到对应条目(ipconfig /displaydns可以查看),操作系统也会有一个域名解析的过程,浏览器会先搜索操作系统的 DNS 缓存中是否有这个域名解析记录,如果有返回结果,解析结束。

此外,电脑本地文件 HOSTS 中可以设定域名到 IP 地址的指向关系。如果 HOSTS 文件中保存有该域名的记录,浏览器会首先使用这个 IP 地址,并将其结果缓存下来,缓存时间同样受域名失效时间和缓存空间大小决定。

(3)查询路由器缓存

如果浏览器和操作系统中没有域名解析记录,就会查询路由器中的 DNS 缓存,如果路由器 DNS 缓存中有解析条目,直接返回结果,解析结束。

(4)递归解析服务器缓存

如果本机和路由器 DNS 缓存中没有该域名的解析记录,浏览器就会向递归服务器发起请求,如果递归服务器缓存有该域名解析条目,返回结果,解析结束。

(5)查询根域名服务器

如果递归服务器缓存中没有结果,就会委托递归服务器发起全球查询,首先递归服务器会向根域名服务器发起解析请求。根域名服务器告知 .com 顶级域名服务器地址。

(6)查询顶级域名服务器

递归服务器向 .com 顶级域名服务器发起 DNS 请求,.com 顶级服务器告知 example.com 所属权威域名服务器地址。

(7)查询权威域名服务器

递归服务器向 example.com 的权威域名服务器地址发起请求,权威服务器告知 www.example.com 所对应的IP地址。

(8)返回解析结果

得到 www.example.com 的 IP 地址后,递归服务器将结果告知客户端,客户端对该 IP 地址发起访问。整个 DNS 解析流程到此结束。

转载:DNS解析顺序是怎样的? - FreeBuf网络安全行业门户

(SAW:Game Over!)

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值