例子:浏览器输入www.baidu.com
1.查询本地hosts文件,是否有网址映射ip,如果有,则直接把映射ip返回,否则进入下一步
2.查询本地dns解析缓存,是否有对应的网址映射ip,如有则直接把映射ip返回,否则进入下一步
3.查询Tcp/ip上配置好的本地首选域名服务器,一般是(8.8.8.8或者114.114.114.114,也可能有自己配置的本地域名服务器),查询本地配置区域资源,如能找到对应域名,则返回解析结果给客户机,此解析具有权威性
4.如果要查询的域名,不由本地服务器配置区域解析,但是该服务器缓存了对应了网址映射关系,则返回解析结果,该解析不具有权威性
5.如果本地域名服务器本地区域文件和缓存信息都无法解析,则根据本地域名服务器是否设置了转发器来进行选择。如果未使用转发模式,则本地dns把请求发至13台根dns,根dns服务器收到请求会判断(.com)是谁授权管理,返回一个负责该顶级域名服务器的一个ip,本地dns服务器收到ip信息后,会联系这个顶级域名服务器,这个顶级域名(.com)服务器如果无法解析,会找一个管理下一级dns服务器地址(baidu.com)的ip给本地dns,然后本地dns连接这个下级服务器,重复上面的动作,直到找到www.baidu.com主机,返回其解析结果ip。
6.如果使用的是转发模式,本地dns服务器会把请求转发至上级dns服务器,由上级dns服务器进行解析,如其无法解析,或转至上上级或到根dns,重复上面的动作
7.首选dns失败后,如果有备选dns服务器,则重复3-6的步骤。
客户机跟本地域名之间是递归查询,本地域名跟其他域名服务器之间是迭代查询,最终都是本地域名服务器去连接其他域名服务器。
区别:
DNS劫持是劫持了DNS服务器,进而修改其解析结果。
DNS污染是国内的某些服务器对DNS查询进行入侵检测,发现与黑名单上匹配的请求,该服务器就伪装成DNS服务器,给查询者返回虚假结果。它利用了UDP协议是无连接不可靠性。
一个是劫持了DNS服务器,一个是伪装成DNS服务器。造成的结果都是返回错误的IP地址。