HTTP 2 Frame Format

All HTTP 2 frames begin with a fixed 9-octet header followed by a variable- length payload as shown in following Figure.

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

 Figure : HTTP 2 Frame Layout

So there are total six fields in HTTP 2 frame.

Now lets see each field  in detail :

Length: The length of the frame payload expressed as an unsigned 24-bit integer. Values greater than 2^14 (16,384) MUST NOT be sent unless the receiver has set a larger value for SETTINGS_MAX_FRAME_SIZE. The 9 octets of the frame header are not included in this value.

Type: The 8-bit type of the frame. The frame type determines the format and semantics of the frame. Implementations MUST ignore and discard any frame that has a type that is unknown.

Flags: An 8-bit field reserved for frame-type specific boolean flags. Flags are assigned semantics specific to the indicated frame type. Flags that have no defined semantics for a particular frame type MUST be ignored, and MUST be left unset (0x0) when sending.

R: A reserved 1-bit field. The semantics of this bit are undefined and the bit MUST remain unset (0x0) when sending and MUST be ignored when receiving.

Stream Identifier: A stream identifier (see Section 5.1.1) expressed as an unsigned 31-bit integer. The value 0x0 is reserved for frames that are associated with the connection as a whole as opposed to an individual stream. The structure and content of the frame payload is dependent entirely on the frame type.

Frame Size and Payload: The size of a frame payload is limited by the maximum size that a receiver advertises in the SETTINGS_MAX_FRAME_SIZE setting. This setting can have any value between 2^14 (16,384) and 2^24-1 (16,777,215) octets, inclusive. All implementations MUST be capable of receiving and minimally processing frames up to 2^14 octets in length, plus the 9 octet frame header. The size of the frame header is not included when describing frame sizes.


Popular posts from this blog

MATLAB code for Circular Convolution using Matrix method

Positive number pipe in angular 2+