DNS解析过程

域名是为了方便记忆而专门建立的一套地址转换系统,要访问一台互联网上的服务器,最终还必须通过IP地址来实现,域名解析就是将域名重新转换为IP地址的过程。一个域名对应一个IP地址,一个IP地址可以对应多个域名,所以多个域名可以同时被解析到一个IP地址,域名解析需要由专门的域名解析服务器DNS服务器来完成。

解析方式

DNS解析查询的方式有两种:递归解析查询和迭代解析查询,通常来说,客户端和本地域名服务器是递归查询,而本地域名服务器和其他域名服务器之间是迭代查询。

递归解析

假如我们本地客户端是A,有三个域名解析服务器BCD,首先在本地客户端A发起一次DNS解析请求,对B服务器请求解析DNSB服务器查询后并无解析记录,则B服务器对C服务器请求解析DNS,,C服务器查询后并无解析记录,则C服务器对D服务器请求解析DNS,,D服务器查询到解析记录,将解析记录返回到C服务器,C服务器将解析记录返回到B服务器,B服务器将解析记录返回到A服务器,完成一次递归解析查询。

A → B → C → D A ← B ← C ← D

迭代解析

假如我们本地客户端是A,有三个域名解析服务器BCD,首先在本地客户端A发起一次DNS解析请求,对B服务器请求解析DNSB服务器查询后并无解析记录,返回到A未查询成功并携带C服务器的地址,客户端AC服务器请求解析DNSC服务器查询后并无解析记录,返回到A未查询成功并携带D服务器的地址,客户端AD服务器请求解析DNS,查询到解析记录,并将解析记录返回到A,完成一次迭代解析查询。

A → B A → C A → D

解析过程

浏览器缓存

在输入URL后浏览器首先检查自身的DNS缓存是否对于此域名有IP地址,通常浏览器对于自身DNS解析缓存保留时间比较短,且数量也有限制,chrome对于域名解析的缓存时间为60s,可以通过地址栏输入chrome://net-internals/#dns清除DNS缓存。

HOSTS

HOSTS文件是一个系统文件,其作用就是将域名与其对应的IP地址建立一个对应关系,当进行DNS解析时系统会首先自动从HOSTS文件中寻找对应的IP地址,如果没有找到,则系统会再将域名提交DNS域名解析服务器进行IP地址的解析。Windows操作系统的此文件通常在C:\Windows\system32\drivers\etc\目录下,Linux操作系统的此文件通常在/etc/目录下。

本地域名解析服务器

客户端向本地域名服务器请求解析,本地域名服务器一般是运营商ISP提供的,一般是通过53端口发送UDP报文请求服务器解析DNS,从客户端到本地域名服务器的解析是递归查询的。假如请求的解析域名为example.expamle.com,本地域名解析服务器未命中,则本地域名解析服务器开始迭代查询。

根域名解析服务器

本地域名解析服务器向根域名服务器a.rootserver.net进行请求,根域名服务器查询到.com顶级域名所对应的服务器,然后向本地域名服务器返回.com顶级域名所对应的服务器解析地址。

顶级域名解析服务器

本地域名解析服务器向顶级域名解析服务器进行请求,顶级域名解析服务器查询到example.com二级域名所对应的服务器,然后向本地域名服务器返回example.com二级域名所对应的服务器解析地址。

二级域名解析服务器

本地域名解析服务器向二级域名解析服务器进行请求,二级域名解析服务器如果未命中,则会向本地域名解析服务器返回example.example.com所对应的权限域名解析服务器的地址,通常来说二级域名解析服务器及以后都可以称为权限域名解析服务器。

权限域名解析服务器

本地域名解析服务器向权限域名解析服务器进行请求,权限域名解析服务器查询到解析记录后,便返回本地域名解析服务器,本地域名解析服务器将查询到的IP地址返回到客户端,并将域名与IP的对应关系进行缓存,假如在权限域名解析服务器还未查询到域名对应的IP地址,则返回解析失败,此外如果客户端还配置了多个DNS服务器的地址,则在查询失败后还会继续向其他所配置的DNS解析服务器进行查询。

每日一题

https://github.com/WindrunnerMax/EveryDay

参考

https://www.jianshu.com/p/6b502d0f2ede https://www.zhihu.com/question/53882349 https://blog.csdn.net/qq_40378034/article/details/100998367