跳到主要内容

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 中.