DNS 手册域名系统参考

域名系统,从报文到加密传输

这里整理的是 DNS 的工作方式和日常会碰到的细节:一条查询怎样走完全程,报文里每个字段是什么意思,DoT、DoH、DoQ 各自解决了什么、又留下了什么,DNSSEC 的信任链怎样建立,出问题时先看哪里。每一节都写明依据的 RFC 编号,方便回到原文核对。

最后修订 · 约 3 分钟读完

从哪里读起#

各页可以单独看,但有些概念会反复出现。按你手头的问题选一条路线:

速查:传输方式与端口#

方式传输层默认端口规范
传统 DNSUDP,必要时 TCP53RFC 1035,RFC 7766(TCP 要求)
DNS over TLS(DoT)TLS over TCP853RFC 7858,RFC 8310
DNS over HTTPS(DoH)HTTP/2 或 HTTP/3443RFC 8484
DNS over QUIC(DoQ)QUIC853/UDPRFC 9250
DNS over DTLSDTLS over UDP853/UDPRFC 8094(实验性,几乎没有部署)
多播 DNS(mDNS)UDP 多播5353RFC 6762

速查:常被问到的几个数字#

项目数值出处与说明
单个标签长度≤ 63 个八位组RFC 1035 §2.3.4。长度字段的高两位另作他用,所以最多 63。
完整名字长度≤ 255 个八位组按线上编码计算,含每个标签的长度字节和末尾的根标签。
不带 EDNS 的 UDP 报文≤ 512 字节RFC 1035。超出时置 TC 位,客户端改用 TCP。
推荐的 EDNS 缓冲区1232 字节2020 年 DNS Flag Day 的建议:IPv6 最小 MTU 1280 减去 IPv6 与 UDP 头部 48 字节,尽量避免分片。
TTL 的取值0 – 2³¹−1 秒字段是 32 位,但 RFC 2181 §8 规定最高位置位的值按 0 处理。
根服务器13 个名字,12 家运营方a 到 m.root-servers.net,Verisign 运营其中两个;每个名字背后是大量任播实例,见根区页。

本站的写法约定#

  • 示例域名使用 example.com、example.net 一类保留名称(RFC 2606、RFC 6761),示例地址使用文档专用段 192.0.2.0/24、198.51.100.0/24、203.0.113.0/24(RFC 5737)与 2001:db8::/32(RFC 3849)。需要演示真实网络行为时,才会用到公共解析器的真实地址。
  • 命令按 BIND 9.18 之后的 dig 和 Knot DNS 的 kdig 语法书写,旧版本可能缺少 +tls、+https 等选项。
  • “必须”“应当”这类词照搬 RFC 的 MUST、SHOULD 时,会在旁边注明;其余地方是普通的中文叙述。
  • 各页顶部有最后修订日期。协议还在演进,凡是写着“目前”的地方,都请以原文和运营方的最新公告为准。

最近修订#

  • 根区页更新根区 KSK 轮换的时间安排,并补上根服务器实例的最新数量。
  • DoQ 页补充错误码与 0-RTT 的限制;加密总览加入 ECH(RFC 9849)。
  • 排错页加入扩展错误码(EDE)对照表和 TTL 换算工具。
  • 新增“系统与浏览器配置”一页,整理 Windows、Android、Apple 平台与 Linux 的设置位置。
  • 报文格式页加入可以直接粘贴报文的解析工具。
DNS 手册 · 内容依据 IETF RFC 与各运营方公开资料整理,出现分歧时以原文为准。回到顶部