面试知识库
基础

DNS解析过程#

一句话答案#

DNS 解析:浏览器缓存→OS 缓存→本地 DNS→根服务器→顶级域→权威 DNS,递归+迭代结合。

核心要点

DNS 解析的完整过程(查询 www.example.com):

递归查询 vs 迭代查询:

维度递归查询迭代查询
发起方客户端 → 本地 DNS本地 DNS → 各级 DNS 服务器
方式”你帮我查到底”,一直等最终结果”我告诉你下一步该找谁”,自己一步步查
谁承担查询压力本地 DNS 服务器查询压力分散到各级服务器
实际使用客户端到本地 DNS 用递归本地 DNS 到各级权威服务器用迭代

DNS 缓存层级(从快到慢):

浏览器缓存(秒级 TTL)
  → OS 缓存(hosts 文件 + systemd-resolved)
    → 本地 DNS 服务器缓存(分钟~小时级 TTL)
      → 各级 DNS 服务器缓存
plaintext

面试衔接点: 这一步是 从URL输入到页面显示 的第一步,面试官经常从 URL 全流程开始追问 DNS 细节。

面试回答(2分钟版)

DNS 解析是将域名转换为 IP 地址的过程,采用递归加迭代的方式逐级查询。以访问 www.example.com 为例,浏览器先查自身 DNS 缓存,没有就查操作系统缓存包括 hosts 文件,还没有就向本地 DNS 服务器发起递归查询,也就是由本地 DNS 帮我们跑腿查到底。本地 DNS 先检查自身缓存,如果也没命中就开始迭代查询:先问根域名服务器,根返回 .com 顶级域名服务器地址;再问 .com 顶级域服务器,返回 example.com 的权威域名服务器地址;最后问权威 DNS,拿到 www.example.com 对应的 IP 地址。本地 DNS 将结果缓存一段时间(由 TTL 控制),再返回给客户端。整个过程中多层缓存大幅减少了实际查询次数。DNS 还可以返回多个 IP 实现负载均衡,或者结合 CDN 返回离用户最近的节点 IP。防止 DNS 劫持可以使用 HTTPDNS 直接通过 HTTP 向可信 DNS 服务器查询,绕过运营商的本地 DNS。

追问与易错

追问方向:

  • “DNS 缓存在哪些层?”→ 浏览器缓存(秒级)→ OS 缓存(hosts 文件)→ 本地 DNS 服务器缓存(分钟~小时级 TTL)→ 各级 DNS 服务器缓存
  • “DNS 劫持怎么防?”→ 使用 HTTPDNS 绕过运营商 DNS + DNSSEC 签名验证 + 定期比对解析结果检测异常
  • “HTTPDNS 是什么?”→ 通过 HTTP 协议直接向可信 DNS 服务器查询(如阿里云 HTTPDNS),绕过运营商本地 DNS,防劫持且可精准调度

易错点:

  • ❌ DNS 每次都要查根服务器——有多层缓存
  • ❌ DNS 只返回一个 IP——可以返回多个做负载均衡