Skip to main content

4. HTTP Frames

4.1 Frame Format

All frames begin with a fixed 9-octet header followed by a variable-length payload.

+-----------------------------------------------+
| Length (24) |
+---------------+---------------+---------------+
| Type (8) | Flags (8) |
+-+-------------+---------------+-------------------------------+
|R| Stream Identifier (31) |
+=+=============================================================+
| Frame Payload (0...) ...
+---------------------------------------------------------------+

Fields:

  • Length: 24-bit unsigned integer (payload length)
  • Type: 8-bit frame type identifier
  • Flags: 8-bit flags specific to frame type
  • R: Reserved 1-bit field
  • Stream Identifier: 31-bit stream identifier

4.2 Frame Size

The size of a frame payload is limited by the maximum size negotiated via SETTINGS_MAX_FRAME_SIZE. Default is 2^14 (16,384) octets.

4.3 Header Compression and Decompression

Header fields are compressed using HPACK [RFC7541]. Header field blocks are fragmented into HEADERS, PUSH_PROMISE, or CONTINUATION frames.