什么是DNS
一、 客户端本地查询(优先查缓存,最快)

浏览器缓存
浏览器会缓存近期访问过的域名 - IP 映射,先查浏览器缓存,命中则直接返回,无需后续步骤。
操作系统缓存
若浏览器缓存未命中,会查询操作系统的本地 DNS 缓存(比如 Windows 的
DNS Client服务、Linux 的/etc/hosts缓存)。注意:
/etc/hosts文件(Windows 是C:\Windows\System32\drivers\etc\hosts)的优先级高于后续的 DNS 服务器查询,若文件里有对应域名的 IP,直接使用。本地 DNS 服务器(递归查询的终点)
若本地缓存都没命中,客户端会向本地 DNS 服务器(通常是路由器分配的,或手动设置的如 8.8.8.8、114.114.114.114)发起递归查询—— 即客户端只等结果,查询过程由本地 DNS 服务器完成。
二、 本地 DNS 服务器的迭代查询(从根到权威,逐层找)
本地 DNS 服务器收到递归请求后,会发起 迭代查询,从根域名服务器开始,逐级向下查询,直到找到权威服务器:
查询根域名服务器(.)
本地 DNS 服务器先问根域名服务器:baidu.com的 IP 在哪?
根域名服务器不存具体 IP,会返回.com 顶级域名服务器的地址。
查询顶级域名服务器(.com)
本地 DNS 服务器再问 .com 服务器:baidu.com的 IP 在哪?
.com 服务器返回baidu.com 权威域名服务器的地址(百度自己的 DNS 服务器)。
查询权威域名服务器(baidu.com)
本地 DNS 服务器最后问百度的权威服务器:
baidu.com的 IP 是多少?权威服务器返回最终的 IP 地址。
三、 结果返回(反向传递)
- 本地 DNS 服务器把获取到的 IP 地址返回给客户端,同时缓存该结果(缓存时间由 TTL 决定)。
- 客户端拿到 IP 后,发起 HTTP/HTTPS 请求,访问目标网站。
一句话总结查询顺序
浏览器缓存 → 操作系统缓存(含hosts文件) → 本地DNS服务器缓存 → 本地DNS服务器迭代查询(根域→顶级域→权威服务器) → 返回结果