DNS
DNS 是分层、分布式的名称查询系统,把域名关联到 IP 地址等资源记录。一次查询可能由本地或递归解析器缓存直接回答,不一定每次都访问根服务器。
1. 面试核心
先记住这几条,再读正文- A、AAAA 分别提供 IPv4、IPv6 地址,CNAME 表示别名。
- 客户端通常向递归解析器请求完整答案,解析器按需迭代查询权威体系。
- TTL 控制缓存有效期,DNS 变更不会让所有缓存同时刷新。
2. 递归与迭代查询
应用先通过系统解析接口查询名称,具体环境可能先检查 hosts、本地缓存或运行时缓存。递归解析器若没有可用结果,再沿根、顶级域和权威服务器逐步找到答案。
客户端 → 递归解析器
→ 根:去询问对应顶级域
→ 顶级域:去询问域的权威服务器
→ 权威:返回记录或后续别名
客户端期待递归解析器完成查询;权威体系之间常通过引用返回下一步要查哪里,这就是迭代过程。缓存了中间委派或最终记录时,可以跳过部分步骤。
3. 缓存与服务切换
假设 A 记录原先指向地址 A、TTL 为 300 秒。发布新地址 B 后,已有缓存仍可能在剩余 TTL 内返回 A。降低新记录的 TTL 也不能追回已经缓存的旧 TTL,需要提前安排变更并让新旧端点共存一段时间。
解析成功之后,客户端连接池和已有连接还可能继续使用旧端点,所以 DNS TTL 不等于完整流量切换时间。不存在的名称也可能有负缓存,新增记录后不能只检查权威端就认定所有客户端立即可见。
4. 使用边界
DNS 传统查询常用 UDP,也支持 TCP;截断响应、区域传送和加密 DNS 会涉及不同传输方式,不能回答成“DNS 只用 UDP”。
排查访问失败时,分开验证解析、建连、TLS 和 HTTP。域名解析到正确 IP 并不证明证书、服务路由或应用响应正常。继续阅读TCP 连接与TLS。
5 · 面试题卡片
先想答案,再翻面题目来自公开面经。点任意一张进入翻卡,可左右切换,看完回到这里。
逐张翻看 1 张 →5.1 访问域名时 DNS 如何解析,修改记录后为什么可能仍访问旧地址?
出现公司:字节跳动
考察重点:递归解析、权威委派和缓存 TTL 对地址变更的影响。
参考回答
客户端通常向递归解析器查询;解析器先使用有效缓存,否则按根、顶级域与权威服务器的委派关系获取答案。旧记录在剩余 TTL 内仍可使用,应用缓存、连接池和已有连接还会影响最终切流。因此变更时需要检查多层缓存并安排旧端点过渡。