1. HTTP/3 的 bidirectional streams、unidirectional streams 与 stream ID 奇偶分配规则?
HTTP/3 的 bidirectional streams、unidirectional streams 与 stream ID 奇偶分配规则是什么?
- HTTP/3 基于 QUIC 流
- 双向流与单向流
- stream ID 奇偶分配规则
HTTP/3 建立在 QUIC 传输之上,QUIC 提供双向流(bidirectional)与单向流(unidirectional)两类。双向流双方都可发送与接收数据;单向流只有发起方发送数据、接收方只读。HTTP/3 使用双向流承载请求/响应(客户端发起请求的流,服务器在流上回响应),用单向流承载控制信息(如控制流、QPACK 编码器流、推送流)。stream ID 的奇偶分配规则:客户端发起的流用偶数 ID,服务器发起的流用奇数 ID;用于标识流类型,使双方可区分流的方向。Unidirectional stream 的 ID 也遵循同样奇偶规则(客户端发起的单向流为偶数,服务器为奇数),且单向流首字节(类型)标识流的内容(如 0x00 控制流、0x01 push 流、0x02 QPACK 编码器流、0x03 QPACK 解码器流)。
stream ID 的奇偶规则让 QUIC/HTTP/3 无需额外握手即可标识流方向(客户端发偶数、服务端发奇数),而双向/单向性决定流的使用用途,是流管理的基础。