当浏览器输入一个url的时候,会发生什么事情呢?第一步,当然事DNS解析啦,下面来剖析一下DNS解析的过程。
what
首先,什么事DNS?
DNS 即 Domain Name System,字面上理解,其实就是一个域名的名字系统,用来管理域名:ip的对应关系。通俗来讲,就是一个键值对的列表。
域名
DNS是域名:ip的对应关系,那么我们来看一下域名的结构,举个例子,首先有一个域名:tlab.cloud.tencent.com,我们看到的最后的com就是顶级域名,顶级域名往前就是二、三……级域名,所以tencent就是二级域名,clloud就是三级域名,以此类推。
DNS解析
那么,在浏览器输入域名的时候,DNS是怎样解析的呢?分以下几步:
- 本地hosts文件
- 本地DNS缓存
- DNS服务器缓存
- DNS服务器递归查找
本地hosts文件
修改hosts文件对于开发者来说并不陌生,这样我们可以不改变线上域名的配置,然后直接通过域名访问我们想要访问的机器。
本地DNS缓存
如果hosts文件没有的话,那么DNS就会查看本地的DNS缓存,如果有的话就直接返回对应的ip即可。下面是我本地对tlab.cloud.tencent.com的DNS解析,因为之前已经解析过来,所以缓存里就有对应的ip地址:193.112.230.97。
DNS服务器缓存
如果是第一次访问某个域名的话,那本地缓存肯定是没有的。
所以就会到DNS服务器查找,链接网络之后,我们的电脑就会有对应的DNS服务器的地址,下图:
这个时候,由于前两个都走不通,这时就会去询问DNS服务器:请问tlab.cloud.tencent.com对应的ip是多少呢?
这个时候,DNS服务器首先是查看自己的缓存,如果有的话,就可以直接返回。
DNS服务器递归查找
如果DNS服务器也没有缓存的话,那就要进行递归查找了。
首先,我们先dig math tlab.cloud.tencent.com 可以看到answer
这里我们会看到域名最后加了一个. 其实所有域名后面其实都是有.的,即.root,表示根域名,因为大家都一样,所以省略了。
tlab.cloud.tencent.com. 600 IN A 193.112.230.97
继续,我们来看以下DNS服务器是怎么递归查找的。
- 询问根域名,获取顶级域名 .com 的 NS(Name Server) 和 A(Address),NS为顶级域名的名字,A即NS对应的ip地址
- 询问顶级域名,获取二级域名 .tencnet.com 的NS 和 A
- 询问二级域名,获取三级域名 .cloud.tencent.com 的NS 和 A
- 询问三级域名,获取四级域名 .tlab.cloud.tencent.com 的NS 和 A
- 最后,将tlab.cloud.tencent.com的ip地址返回给用户,并且缓存
- 用户获取到真正的ip地址,并且缓存
写在最后
DNS缓存是我们每天都会用到的,当然,我们也不会每天都用到,了解之后也有助于我们更加熟悉开发流程。
今天的文章DNS解析流程分享到此就结束了,感谢您的阅读。
版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 举报,一经查实,本站将立刻删除。
如需转载请保留出处:https://bianchenghao.cn/18903.html