HTTPS / SVCB 记录
SVCB/HTTPS 记录(RFC 9460)把「如何建立连接」也写进 DNS,可携带 ALPN、替代端口、IPv4/IPv6 提示、服务目标与 ECH 配置,影响是否用 HTTP/3、连哪个目标、是否尝试 ECH。
#type / concept
#status / growing
#tech / network
#protocol / dns
[!info] related notes
- 所属 MOC: DNS 知识地图
- 记录模型: 资源记录 RR 与 RRset
- ECH 配置: ECH
- 加密传输: DoH / DoT
HTTPS / SVCB 记录
一句话定义
SVCB(Service Binding,服务绑定) 与它的特化类型 HTTPS 记录(RFC 9460),让 DNS 不只回答「IP 是多少」,还能回答「如何建立连接」:支持哪些协议、用哪个端口、目标服务是谁、以及 ECH 配置是什么。
核心机制 / 工作原理
传统上浏览器只查 A/AAAA;现在它会额外查 anyrouter.top HTTPS:
anyrouter.top. HTTPS 1 . alpn=h3,h2 ipv4hint=155.102.x.x ech=...
anyrouter.top. HTTPS 2 cdn.x. alpn=h3
可携带的参数(SvcParam)包括:
| 参数 | 作用 |
|---|---|
alpn | 支持的应用层协议,如 h2(HTTP/2)、h3(HTTP/3/QUIC) |
port | 替代端口 |
ipv4hint / ipv6hint | 连接目标的地址提示,减少额外解析 |
target | 实际服务目标名(可不同于查询名) |
ech | ECH 配置,供建立加密 ClientHello 使用 |
为什么重要
这些信息会影响浏览器的连接决策:
是否使用 HTTP/3(h3)?
连接哪个目标(target)?
是否尝试 ECH(ech=...)?
所以现代网页访问不一定只查 A 和 AAAA。
最小例子 / 最小场景
dig anyrouter.top HTTPS
dig anyrouter.top SVCB
若返回的 HTTPS 记录带了 alpn=h3 与 ech=...,支持 ECH 的浏览器就会尝试用加密 SNI 建立 TLS(见 ech-encrypted-client-hello)。
边界与易混淆点
- HTTPS 记录是 SVCB 的「针对 HTTP 的别名类型」,二者机制相同,只是 HTTPS 默认应用于
https://服务。 ech参数只是配置分发渠道;真正加密 SNI 发生在 TLS 层(见 ech-encrypted-client-hello)。- 不是所有站点都部署了 HTTPS/SVCB;没有时浏览器退回传统 A/AAAA + 明文 SNI。
- 在代理/DNS 分流场景里,若本地解析路径拿不到正确的 HTTPS 记录(例如被某个解析器过滤),可能导致无法启用 HTTP/3 或 ECH,表现为「能开但没走最优连接」。
- 协议标准化(RFC 9460)≠ 全面部署;客户端、权威、网络三者都支持才算数。