浅析DNS解析过程

前言

为了了解DNS解析的整个过程,可是我查看了一些博文,但都不是我想要的结果,要么讲的很浅显,要么就是那种专门作计算机网络才能看得懂得文章,所以为了不之后本身忘掉,把此次的理解总结一下。缓存

迭代查询和递归查询

DNS大体解析过程以下:服务器

首先我先说一下我对DNS递归查询以及迭代查询的理解:DNS的解析过程默认是采用递归查询,也就是一层一层的传递下去,可是若是遇到某个服务器的RA字段(表示是否支持递归查询)为0,或者DNS域名查询请求中RD字段(表示是否指望使用递归查询)为0时,此时将会采用迭代查询,迭代查询就是每次查询到的结果不是由你递交请求的服务器代你继续查询,而是将查询结果返回给当前发出请求的机器。上图客户端将域名查询请求交给本地DNS服务器以后是由本地DNS服务器代替客户端继续查询,而不是将根域名服务器的地址返回给客户端,再让客户端请求,所以该阶段就是递归查询;本地DNS服务器后面的过程就是迭代查询过程。

从一个域名到一个IP地址到底发生了什么

当客户端须要经过一个域名请求资源时,必须知道该域名对应的IP地址是什么;为何必定要知道请求目的地的IP才能发送请求?由于咱们现有的网络几乎都是基于TCP/IP协议的,而TCP/IP协议是基于IP地址的进行通信的。假设如今客户端要访问www.google.com,发生的DNS解析过程大体以下:网络

  1. 客户端首先查询本身的缓存中是否有该域名的访问记录,若是有的话直接访问对应的IP地址,不然进行下一步。
  2. 在缓存没有查询到要访问域名的记录,则去查询主机下面的host文件(记录一些经常使用网址域名对应的ip地址的一个文件)是否有记录,若是有的话直接访问对应的IP地址,不然进行下一步。
  3. host文件中也未找到,则像本地配置的DNS服务器进行查询(这里只以首选DNS服务器为例,备用DNS服务的过程基本相同),本地DNS服务器接收到域名解析请求以后查询本身的缓存是否有该域名的记录,若是有直接返回域名对应的IP地址;若是没有,则去查询根域名服务器(这里本地DNS域名服务器采用迭代查询,递归查询的过程更简单一层一层查到底直至返回结果)。
  4. 根域名服务器收到该域名解析请求后,查询该域名对应的顶级域名服务器,将顶级域名服务的IP地址返回给本地DNS服务器。
  5. 本地DNS服务器将结果缓存,同时向该域名的顶级域名服务器发出请求;顶级域名服务器收到请求后,首先查看本身的缓存是否有该域名的记录,若是有则直接返回,不然将查询该域名的二级域名服务器,并将IP地址返回给本地DNS域名服务器。
  6. 后面的查询过程都相似于第五步直至返回最终结果,将结果缓存并将IP地址返回给客户端。
  7. 客户端访问IP地址并将查询结果进行缓存。

以上仅我的理解,若是有错,欢迎各位大佬指出。google

相关文章
相关标签/搜索