QUIC短头报文只包含目的连接ID,不包含目的连接ID的长度。 QUIC 客户端如何在没有识别连接所需长度的情况下检索连接 ID?
此外,连接ID可以是可变大小的,并且同一个连接可以有多个连接ID。因此,需要长度来识别连接 ID。
此外,QUIC 并不限制一个 UDP 连接使用一个 QUIC 连接。因此,多个 QUIC 连接可以通过一个 UDP 连接。
如果两个连接的连接 ID 前缀相同怎么办?我想仅仅检查连接 ID 匹配是行不通的。
我尝试阅读 RFC 和其他博客,但无法弄清楚。请让我知道客户端如何从短标头数据包中确定性地确定连接 ID。
QUIC 短头数据包只有在握手完成后才会被接受(握手期间仅使用长头数据包)。握手完成后,连接 ID 长度已知,端点使用它来解析短标头数据包。
关于多个连接 ID:请注意,短标头数据包仅包含目标连接 ID,并且该连接 ID 由接收数据包的对等方生成。因此,如果对等方(无论是客户端还是服务器)使用不同的连接 ID 长度,它就会知道会发生什么。例如,它可以以某种方式对连接 ID 的第一部分的长度进行编码。
虽然规范允许这样做,但我从未见过它被使用。即使对等方(需要)对不同的连接使用不同的长度(例如运行时迁移到更长的连接 ID),它仍然可以对已建立的连接(新的连接 ID)使用固定长度,这将导致设计更简单。
来自 https://www.rfc-editor.org/rfc/rfc9000.html#name-connection-id:“具有短标头的数据包(第 17.3 节)仅包含目标连接 ID 并省略显式长度。端点应该知道目标连接 ID 字段的长度“
。