跳到主要内容

5. 上下文标识符

本文档定义的在 HTTP 中代理 IP 的机制允许未来扩展交换携带不同于 IP payload 语义的 HTTP Datagrams. 其中一些扩展可以用额外数据增强 IP payload 或压缩 IP 头部字段, 另一些扩展则可以交换与 IP payload 完全分离的数据. 为实现这一点, 与 IP 代理请求流关联的所有 HTTP Datagrams 都以 Context ID 字段开始; 见第 6 节.

Context ID 是 62 位整数 (0 到 2^62-1). Context ID 编码为可变长度整数; 见 QUIC 第 16 节. Context ID 值 0 保留给 IP payload, 非零值则动态分配. 非零偶数 Context ID 由客户端分配, 奇数 Context ID 由代理分配. Context ID 命名空间绑定到给定 HTTP 请求; 在不同请求中, 相同数值的 Context ID 可能同时被分配, 并且可能具有不同语义. 在给定 HTTP 请求内, Context ID MUST NOT 被重新分配, 但 MAY 以任意顺序分配. 将偶数和奇数 Context ID 用途分开的 Context ID 分配限制, 是为了避免端点之间需要同步. 然而, 一旦某个 Context ID 已被分配, 这些限制并不适用于该 Context ID 的使用; 它可以由客户端或 IP 代理任一方使用, 与最初由哪个端点分配无关.

注册是端点告知其对等方某个给定 Context ID 的语义和格式的动作. 本文档不定义注册如何发生. 未来扩展 MAY 使用 HTTP 头字段或 capsule 注册 Context ID. 根据所使用的方法, 可能会收到带有尚未注册 Context ID 的 datagram. 例如, 这可能是由于传输过程中包含 datagram 的分组与包含注册消息的分组发生重排序.