Nsking和他的想法

DNS的解析流程分析
2020-03-16

1.什么是DNS解析?有哪几类?

DNS,全名Domain Name Service,是一种分布式的名称解析服务,简而言之它可以将你输入的域名转换为ip,例如把baidu.com这个域名转换为“39.156.69.79”这个IP。

DNS解析分为两类,分别是递归解析和迭代解析,一般情况下我们是用的都是迭代解析,在此,我们尝试以本站为例,分析一下迭代解析的大致流程。

2.迭代解析的流程

以下情况属于初次访问,各级DNS均无缓存的情况

第一次请求:

假如我们请求的地址是是test001.nksec.cn,使用了阿里云的免费dns服务进行解析。现在我需要访问这个网站,于是我在浏览器中输入了test001.nksec.cn,浏览器首先会检查操作系统中定义的hosts文件(也就是本机DNS解析表,Windows中是c:/Windows/system32/drivers/etc/hosts,Linux是/etc/hosts),如果没有在此设定解析记录的话就向我在网卡中配置(或者由上级路由器配置)的本地DNS服务器(本地用ali公共DNS223.5.5举例)的53端口使用UDP协议发起解析请求。

第二次请求:

223.5.5收到我的解析请求,查找了自己所在的缓存库发现并没有这个域名相关信息,但是它会返回他所设定的根域名服务器给我们。

第三次请求:

在这里我们可以看到上级DNS给我们返回了根服务器的地址,然后我们本机的DNS客户端就这个DNS根服务器(此处以M根202.12.27.33为例)查询。202.12.27.33收到这个查询请求并不会直接返回blog.nksec.cn的地址,因为它也不知道。毕竟如果它管理所有解析记录,那所需的资源是极大的,所以它只会缓存一些必要的重要记录,以及负责管理各自域名后缀(.cn,.net,.com)的顶级域名根服务器的ns记录,这也是DNS作为一个可能是全世界最大应用最广的分布式系统的原因所在。202.12.27.33收到了解析请求,但是它也不知道test001.nksec.cn究竟对应哪个ip,它只能将自己知道的.cn后缀顶级域名的DNS服务器告诉了我们。

第三次请求:

得到了.cn后缀顶级域名的dns服务器,我们的主机就会再次向cn域的根服务器发起请求,希望得到test001.nksec.cn的地址。cn域收到请求,检查后发现自己的数据库没有这个域名所对应的解析记录,但是它这里有一条ns记录记录了nksec.cn这个一级域名所用的域名服务器,也就是我所使用的阿里云免费dns解析服务器:ns2.alidns.com,于是它就把ns2.alidns.com返回给我们的主机,告诉我们再去找alidns要。

第四次请求:

主机收到alidns的地址后,再次向alidns发起请求,alidns经过检查,确认这个三级域名归自己管辖,于是取出了存在自己这里的test001.nksec.cn所对应的a记录——192.168.1.1返回给了我们的主机,所谓DNS迭代查询就是如此。

3.非权威应答和权威应答

一般由最终域名服务器层层迭代下来的记录,被称为权威应答,因为这是直接管理该域名的服务器提供的一手消息,而非权威应答指的就是二手(旧)消息。看到这里,很多朋友可能发现了,这样一层一层迭代,从属关系挺清楚的,但是这样的话得发起4次dns请求,时间开销极大,此时就要引入DNS缓存这个概念。 在我们查询过一个域名之后,本地DNS服务器(223.5.5.5)和我们的电脑以及浏览器会建立一个DNS缓存,这样在有人请求这个域名时就无需重新获取解析记录,可以直接返回,这个就叫非权威应答。缓存有效期是根据DNS解析记录的TTL来判定的,除此之外为了提升速度,DNS服务器的根服务器采用了任播的技术(简而言之就是互联网中有多个同一的主机,发送出的请求谁先收到谁就先回答),这使得DNS服务器的响应速度和安全性也有了很大的提升。

留个小脚印

  • *只有经过审核的评论才会显示出来噢 发表评论
  • 还没有人留下脚印噢,快来踩踩叭