1. QUIC v2 与 IETF QUIC 在 version negotiation 的 handshake 工程价值?
请解释 QUIC v2 以及 IETF QUIC 协议族中,version negotiation(版本协商)机制在整个握手过程中的工程价值是什么?
- QUIC version negotiation 的触发条件与流程
- 版本协商对协议演进与抗 ossification 的意义
- 版本协商流程对连接建立延迟与握手状态机的影响
QUIC 的版本协商发生在客户端发送的 Initial 携带的版本号不被服务端支持时,服务端回一个 Version Negotiation(VN)包,列出它支持的版本,客户端据此选择。其工程价值在于把"版本演进"从硬编码的 TCP/TLS 升级路径中解放出来——QUIC 让版本成为连接建立时的一个可协商参数,从而可以快速迭代协议、修复瑕疵、部署新机制,而无需等待漫长的 Deployment 周期。QUIC v2 正是这一能力的演练:它刻意改变了一些 wire 细节(如 Initial salt、version 字段、帧格式)来验证版本协商与兼容性 shim 是否真的能让新版本与旧版本共存、平滑迁移。
版本协商的深层价值是"协议可演进性"。QUIC 的 long header 保留 version 字段,使中间盒和两端都能识别版本;而 v2 的核心目的之一就是证明"发布新版本"这一流程本身是可行的,从而避免协议被 ossification 固化。