大概流程:
当浏览器访问一个网址时,首先会对域名进行解析,解析出域名对应的ip,如下图所示:
1.当用户访问baidu.com时,首先浏览器会检查自身dns缓存,如果没有,则检查客户端hosts文件
2.当hosts文件中也没有域名对应的ip,则dns客户端会请求配置文件中配置的Local DNS Server(本地dns服务器),一般为运营商dns服务器或者公司自己搭建的dns服务器
3.如果本地dns服务器没有解析记录,则本地dns服务器会直接请求Root DNS Server(根dns服务器)
4.根dns服务器如果无法解析,会返回管理该一级域名(com)的gTLD Server(顶级域名dns服务器)
5.本地dns服务器会去请求顶级域名dns服务器,如果无法解析,会返回管理该二级域名的Name Server(二级域名dns服务器,一般为域名提供商的dns服务器)
6.本地dns服务器去请求二级域名dns服务器,此时二级域名服务器返回域名的解析结果给本地dns服务器
7.本地dns服务器缓存结果,并返回给dns客户端,dns客户端将结果给到浏览器
常用的域名解析shell命令
cat /etc/hosts 查看客户端配置的域名解析记录
cat /etc/resolv.conf 查看客户端配置的本地dns服务器(如果没有配置,当我们接入网线时,网卡会获取本地dns服务器,如何获取可参考:https://zhidao.baidu.com/question/250035709.html)
dig domain 获取域名的解析结果, dig domain @8.8.8.8 指定某个本地dns服务器来解析,如果不指定就按照上面所说的流程采用默认配置的本地dns服务器解析,domian为要解析的域名,8.8.8.8为指定的本地dns(https://blog.csdn.net/weixin_40748006/article/details/106328924)
nslookup domain 获取域名的解析结果
traceroute domain traceroute是用来检测发出数据包的主机到目标主机之间所经过的网关数量的工具