DNS 不只是电话簿
DNS 同时是分层命名系统、分布式数据库、授权委派体系、查询—响应协议与服务发现/流量调度控制平面;它只决定「连接谁、如何连接」,不负责传输网页。
#type / concept
#status / growing
#tech / network
#protocol / dns
[!info] related notes
- 所属 MOC: DNS 知识地图
- 名字空间: 域名树与 FQDN
- 协议层关系: what-happens-after-entering-url / https
- 实战总览: DNS 快速概览
DNS 不只是电话簿
一句话定义
DNS(Domain Name System)不是简单的「域名 → IP 地址」对照表,而是一套全球分层的命名系统 + 分布式数据库 + 授权委派体系 + 查询—响应协议 + 服务调度控制平面。
核心机制 / 工作原理
「电话簿」比喻只覆盖了最表面的一层。准确地说,DNS 至少同时承担五种角色:
- 分层命名系统:用树状名字空间给互联网资源命名(见 dns-name-space)。
- 分布式数据库:数据分散保存在各权威服务器,而非集中存储。
- 授权与委派体系:根 → 顶级域 → 注册域逐级把管理权委派下去(见 domain-vs-zone)。
- 查询—响应协议:客户端与解析器之间、解析器各层之间按固定报文格式交互。
- 控制平面:CDN 调度、流量工程、安全策略、服务发现都通过 DNS 记录表达。
因此,DNS 能表达的远不止 IP:
域名 → IP 地址 (A / AAAA)
域名 → 邮件服务器 (MX)
域名 → 其他域名 (CNAME / NS)
域名 → 服务端口 (SRV)
域名 → TLS/HTTP 参数 (HTTPS / SVCB)
域名 → DNSSEC 公钥与签名 (DNSKEY / DS / RRSIG)
域名 → ECH 配置 (HTTPS / SVCB)
基础架构仍建立在 RFC 1034 / RFC 1035(1987),但今天叠加了缓存、EDNS、DNSSEC、Anycast、DoH/DoT/DoQ、SVCB、ECH、浏览器内置解析器、VPN 与代理等许多层;权威术语由 RFC 9499 统一整理。
最关键的心智模型
DNS 只负责帮助客户端确定「连接谁、如何连接」;DNS 本身不负责传输网页。
访问一个网站的完整流程,DNS 只是其中一段:
输入 https://anyrouter.top
↓ 应用判断要查哪些记录
浏览器/系统缓存/hosts
↓
Stub Resolver → 递归解析器 → 根/TLD/权威
↓
获得 A/AAAA/HTTPS/CNAME 等
↓
浏览器选择目标 IP
↓
建立 TCP/QUIC → TLS 握手(发 SNI) → 发送 HTTP
DNS 查询在「获得记录」这一步就结束了,后续 TCP、QUIC、TLS、HTTP 都属于其他协议层。
最小例子 / 最小场景
以 https://anyrouter.top 为例:DNS 决定浏览器去连 155.102.x.x 还是某个 CDN 边缘,并可能通过 HTTPS 记录提示「用 HTTP/3、尝试 ECH」。但网页内容是否返回、TLS 是否成功,取决于后续的 TCP/TLS/HTTP 层。
边界与易混淆点
- DNS 成功 ≠ 网站一定能打开:拿到 IP 后连接/TLS/HTTP 仍可能失败。
- DNS 返回错误 IP → TLS 就可能失败:目标地址错了,握手自然对不上证书。
- TLS 失败 ≠ DNS 协议失败:TLS 是另一层,证书或 SNI 问题不归 DNS 管。
- 使用代理 ≠ DNS 自动走代理:代理通常只改变「连接从哪发出」,不一定改变「最先解析到哪个 IP」(见 proxy-and-dns-separation)。
- 不要因为「我挂了代理」就假设 DNS 也跟着代理出口走了——这是 most common 排障误区。