完整的DNS解析查询过程

发布时间:2022-06-13 14:28:34

我们都知道DNS在网站的访问过程中起到了很重要的作用,它将简单易记的域名翻译成可由计算机识别的IP地址,从而实现了我们输入域名就可以到达站点的效果。

DNS是一个涉及全球很庞大的一个系统,所以DNS解析的过程也是很复杂的。因此,我们在网上看到的DNS解析过程一般都是简化的过程,简化的流程虽然能够让我们清晰快速地了解DNS解析过程,但中间忽略了很多环节,比如客户端、路由器等。接下来,我们就还原完整的DNS解析查询过程,以及DNS在工作中的具体流程和顺序。

1.查看浏览器内部缓存

我们无论访问哪个网站都需要通过浏览器进行,所以浏览器缓存在DNS解析过程中起到了很大作用。为了缩短访问时间,浏览器会将我们首次请求获得的解析记录保存在浏览器缓存中。当再次请求该域名时,浏览器首先会搜索自身DNS缓存,如果浏览器缓存中有记录直接访问对应地址,如果没有记录,再进行下一步。

2.本机系统缓存

如果浏览器自身的缓存里面没有找到对应的条目,那么浏览器会搜索操作系统自身的DNS缓存如果找到且没有过期则停止搜索解析到此结束。如果没有结果,再进行下一步搜索。

注:怎么查看操作系统自身的DNS缓存,以Windows系统为例,可以在命令行下使用 ipconfig /displaydns 来进行查看。另外,通过ipconfig /flushdns命令可以清除系统中的DNS缓存。

3.Hosts文件

如果在Windows系统的DNS缓存也没有找到结果,浏览器会调用一个类似 gethostbyname 的库函数读取hosts文件(位于C:\Windows\System32\drivers\etchosts是记录域名和IP地址一对一对应关系的本地文件。如果hosts文件中有记录,则解析停止返回结果,如果没有进行下一步搜索。

4.路由器缓存、ISP缓存

如果浏览器和系统缓存都没有,系统的 gethostname 函数就会像 DNS 服务器发送请求。而网络服务一般都会先经过路由器以及网络服务商(电信),所以会先查询路由器缓存,然后再查询 ISP DNS 缓存。

5、本地DNS服务器

如果14都无法获取解析结果,才会进行上面提到了DNS解析简化流程,请求本地DNS服务器。如果本地DNS服务器有结果,停止搜索,返回结果。如果没有结果,进行全球递归查询。

6.全球递归查询

如果本地服务器没有结果,就会进行全球递归查询。首先本地服务器请求根服务器,根服务器根据域名后缀,将所对应的顶级服务器告知本地服务器(如cn顶级域名服务器),顶级域名服务器再根据域名的二级字段,将对应权威域名服务器告知本地服务器(如sfn.cn的权威服务器vip1.sfndns.cn)。然后权威服务器将请求结果告知本地服务器,本地服务器将结果返给客户端,至此,整个全球递归查询过程结束。


附:

简化的DNS解析过程:

1)客户端访问某个域名,会首先请求本地DNS服务器;

2)如果本地服务器有记录,直接返给客户端,如果没有会委托本地服务器进行全球递归查询;

3)最终经过根服务器-顶级服务器-权威服务器,最终访问到该域名对应的权威服务器,权威服务器将记录值返给本地服务器;

4)本地服务器将结果告知客户端,完成整个DNS解析过程。






相关推荐:

什么是DNS?DNS解析的原理是怎样的?



上一篇:什么是SSL证书?网站为什么要安装SSL证书? 下一篇:如何安装SSL证书