跳到主要内容

5.1. 乐观预连接和连接重用 (Optimistic Pre-connection and Connection Reuse)

如果地址响应在相应的 SVCB 响应之前到达,客户端可以像 SVCB 查询返回 NODATA 一样启动连接,但在 SVCB 响应到达之前,不得传输任何可能被 SVCB 响应改变的信息。例如,未来可能定义会改变 TLS ClientHello 的 SvcParamKeys。

实现此优化的客户端应该在开始乐观预连接之前等待 50 毫秒,如 [HappyEyeballsV2] 中的指导所述。

如果客户端在使用某个记录时会尝试等效的连接,则该 SVCB 记录与该连接一致。如果 SVCB 记录与活动或进行中的连接 C 一致,客户端可以优先选择该记录并使用 C 作为其连接。例如,假设客户端为使用 TCP 上的 TLS 的协议接收到以下 SVCB RRset:

_1234._bar.example.com. 300 IN SVCB 1 svc1.example.net. (
ipv6hint=2001:db8::1 port=1234 )
SVCB 2 svc2.example.net. (
ipv6hint=2001:db8::2 port=1234 )

如果客户端有一个到 [2001:db8::2]:1234 的进行中的 TCP 连接,它可以在该连接上继续进行 TLS,即使 RRset 中的另一个记录具有更高的优先级。

如果没有任何 SVCB 记录与任何活动或进行中的连接一致,客户端按照第 3 节中描述的方式继续建立连接。