DNS解析的目的是将便于人类记忆的域名如www.baidu.com解析为计算机网络可以识别及查找的IP如39.156.66.18
域名解析过程可以分为三个阶段
阶段一:客户端
1、先匹配浏览器缓存:浏览器会按照一定的频率缓存DNS记录,浏览器缓存是为了节约网络的资源加速浏览,浏览器在用户磁盘上对最近请求过的文档(包括DNS)进行存储,当访问 者再次请求这个页面时,浏览器可以从本地磁盘显示文档,这样就可以加速页面的阅览。
2、操作系统缓存:如果域名不能命中浏览器缓存中的DNS记录,那就在操作系统中找,个人认为操作系统DNS缓存并非Hosts文件,也是类似于浏览器缓存一样记录在磁盘中,以一定 的频率新旧更迭或删除;
3、Hosts:当域名不能命中以上浏览器、操作系统的缓存中DNS记录时,则会尝试匹配C:\Windows\System32\drivers\etc路径下的Hosts文件,该文件下是记录IP与域名的对应关系;
4、当然还有本地网络设备的缓存,如路由器缓存
阶段二:DNS服务器端
可以把DNS服务器看成一个庞大的记录域名与IP对应关系的数据库,当DNS服务器收到客户端域名解析请求时,首先查询数据库,如果数据库中有此域名对应的IP并且可用,则返回给客户端,完成域名解析;
阶段三:DNS服务器寻找帮助
如果本地DNS服务器本地区域文件与缓存解析都失败,则根据本地DNS服务器的设置(是否设置转发器)进行查询,如果存在转发模式,本地DNS就把请求发至13台根DNS,根DNS服务器收到请求后会判断这个域名中的顶级域名或者一级域名由谁来授权,如www.baidu.com中的.com,炳辉返回一个负责该顶级域名服务器的一个IP。本地DNS服务器收到IP信息后,会联系负责.com域的这台服务器。这台负责.com域的服务器收到请求后,如果自己无法解析,它就会找一个管理.com域的下一级DNS服务器地址.baidu.com给本地DNS服务器。当本地DNS服务器收到这个地址后,就会找baidu.com域服务器,重复上面的动作,进行查询,直至找到www.baidu.com主机。
如果用的是转发模式,此DNS服务器就会把请求转发至上一级DNS服务器,由上一级服务器进行解析,上一级服务器如不能解析,或找根DNS服务器把请求转至上上级,一次循环。