DNS解析

DNS解析的介绍


DNS是什么

DNS 即 Domain Name System,字面上理解,其实就是一个域名的名字系统,用来管理域名:ip的对应关系。通俗来讲,就是一个键值对的列表。上面保存着 域名:ip。

举个例子 www.baidu.com 其实是www.baidu.com.最后面的.指的是根服务器root。所以它的结构组成就是:

主机名.二级域名.一级域名.顶级域名

反正就是从后往前一直类推域名的等级

DNS解析的流程

  1. 本地host文件
  2. 本地DNS缓存
  3. DNS服务器缓存
  4. DNS服务器递归查询

本地host文件

通过修改host文件,可以直接通过域名访问我们想要访问的机器

本地DNS缓存

如果host文件中并没有获取到ip地址,那么DNS就会查询本地的DNS缓存,如果有的话就直接返回对应的IP地址。如果没有那么会继续进行下面的流程

DNS服务器缓存

如果本地DNS缓存没有,那么我们会直接去到DNS缓存服务器重查询。而这个DNS服务器的地址,在我们链接了网络之后,本机电脑就会有该DNS服务器的地址。

然后DNS接收到了查询访问之后,查看自己的缓存中是否有这个域名对应的ip地址。如果没有,那么他会返回一个根服务器的ip地址然后让我们通过这个ip地址去查询

DNS服务器的递归查询

  1. 首先,我们会询问根域名,获取顶级域名(.com)的NS(name Server)和 A(address)。N是顶级域名的名字,A为该域名的ip
  2. 获取到了顶级域名的ip后,我们会向顶级域名获取二级域名同样的获取它的NS和A
  3. 此时我们再向baidu.com请求,www.baidu.com的NS和A
  4. 最终我们会向www.baidu.com请求,并且获取IP,然后返回给本机,并且本机会把他们缓存起来

补充 如果我们的访问的域名有一个别名,例如www.a.baidu.com。那么在第三步的时候,我们会查询到两个域名的ip分别是www.a.baidu.com 和 www.baidu.com。下面再说一下如果获取到的是前面的域名的情况

  1. 获取到www.a.baidu.com的ip的时候,我们会重新向.root发起请求
  2. 然后向.com发起请求,然后获取到baidu.com的ip
  3. 向a.baidu.com发起请求,然后获取到a.baidu.com的ip
  4. 最后向www.a.baidu.com请求,获取到ip然后返回给本地

最终,本机会获取到www.baidu.com和www.a.baidu.com的ip地址,并且缓存起来

最后附上一张网上文章看到的图,帮助理解

image

参考文章
https://juejin.cn/entry/6844903590918619144
https://juejin.cn/post/6844903752890056711
https://juejin.cn/post/684490375289005671

你可能感兴趣的:(DNS解析)