4. HTTP Frames
4.1 Frame Format
所有 frame 都以固定的 9-octet header 开始, 后面跟随一个可变长度的 payload.
+-----------------------------------------------+
| Length (24) |
+---------------+---------------+---------------+
| Type (8) | Flags (8) |
+-+-------------+---------------+-------------------------------+
|R| Stream Identifier (31) |
+=+=============================================================+
| Frame Payload (0...) ...
+---------------------------------------------------------------+
字段:
- Length: 24-bit 无符号整数 (payload length)
- Type: 8-bit frame type identifier
- Flags: 特定于 frame type 的 8-bit flags
- R: 保留的 1-bit 字段
- Stream Identifier: 31-bit stream identifier
4.2 Frame Size
frame payload 的大小受通过 SETTINGS_MAX_FRAME_SIZE 协商出的最大大小限制. 默认值为 2^14 (16,384) octets.
4.3 Header Compression and Decompression
Header fields 使用 HPACK [RFC7541] 进行压缩. Header field blocks 会被分片到 HEADERS, PUSH_PROMISE, 或 CONTINUATION frames 中.