什么是DNS

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

image-20251215210130785

  1. 浏览器缓存

    浏览器会缓存近期访问过的域名 - IP 映射,先查浏览器缓存,命中则直接返回,无需后续步骤。

  2. 操作系统缓存

    若浏览器缓存未命中,会查询操作系统的本地 DNS 缓存(比如 Windows 的DNS Client服务、Linux 的/etc/hosts缓存)。

    注意:/etc/hosts文件(Windows 是C:\Windows\System32\drivers\etc\hosts)的优先级高于后续的 DNS 服务器查询,若文件里有对应域名的 IP,直接使用。

  3. 本地 DNS 服务器(递归查询的终点)

    若本地缓存都没命中,客户端会向本地 DNS 服务器(通常是路由器分配的,或手动设置的如 8.8.8.8、114.114.114.114)发起递归查询—— 即客户端只等结果,查询过程由本地 DNS 服务器完成。

二、 本地 DNS 服务器的迭代查询(从根到权威,逐层找)

本地 DNS 服务器收到递归请求后,会发起 迭代查询,从根域名服务器开始,逐级向下查询,直到找到权威服务器:

  1. 查询根域名服务器(.)

    本地 DNS 服务器先问根域名服务器:baidu.com的 IP 在哪?

    根域名服务器不存具体 IP,会返回.com 顶级域名服务器的地址。

  2. 查询顶级域名服务器(.com)

    本地 DNS 服务器再问 .com 服务器:baidu.com的 IP 在哪?

    .com 服务器返回baidu.com 权威域名服务器的地址(百度自己的 DNS 服务器)。

  3. 查询权威域名服务器baidu.com

    本地 DNS 服务器最后问百度的权威服务器:baidu.com的 IP 是多少?

    权威服务器返回最终的 IP 地址

三、 结果返回(反向传递)

  1. 本地 DNS 服务器把获取到的 IP 地址返回给客户端,同时缓存该结果(缓存时间由 TTL 决定)。
  2. 客户端拿到 IP 后,发起 HTTP/HTTPS 请求,访问目标网站。

一句话总结查询顺序

浏览器缓存 → 操作系统缓存(含hosts文件) → 本地DNS服务器缓存 → 本地DNS服务器迭代查询(根域→顶级域→权威服务器) → 返回结果
← 返回列表