- From: Roberto Peon <grmocg@gmail.com>
- Date: Tue, 5 Feb 2013 14:28:28 -0800
- To: HTTP Working Group <ietf-http-wg@w3.org>
- Message-ID: <CAP+FsNemzHOH1YrDXbEqy_dMB8h=e2pD0QrgLzkz+cUtdHMaRw@mail.gmail.com>
The proposal for framing is that there are always 8 bytes to read for every frame, both control and data frames. (Thanks to Jeff Pinner for modifying this for me already!) Generically, this is the format of a frame. 0 1 2 3 4 5 6 7 +--------+--------+--------+--------+--------+--------+--------+--------+ | Length(16) |Type(8) |Flags(8)| Num-of-Entries-or-Stream-ID-or-ID | -> +--------+--------+--------+--------+--------+--------+--------+--------+ 8..N +========+ | Data | +========+ Length: An unsigned 16-bit value representing the number of bytes of the data field. Type: The frame type. Flags: Flags related to this frame. Flag definitions are dependent upon the frame type. Data: data associated with this control frame. The format of this data is controlled by the frame type. For a data frame, TYPE is set to zero, and the Num-of-Entries-or-Stream-ID-or-ID field (gotta get a better name :) ) contains a '0' followed by 31 bits of stream ID. Valid flags are: 0x01 = FLAG_FIN - signifies that this frame represents the last frame to be transmitted on this stream. See Stream Close (Section 2.3.7) below. 0x02 = MSG_DONE - signifies that this frame represents the last frame of a message. This is relevant for layering of message- based protocols on top of SPDY. For control frames, a non-zero value will exist in the TYPE field. The following flags are valid for all control frames: 0x01 = FLAG_FIN - signifies that this frame represents the last frame to be transmitted on this stream. 0x02 = MSG_DONE - signifies that this frame represents the last frame of a sequence of a run of same-type control frames. If MSG_DONE is not set for a control-frame, then the particular control message was unable to fit within a single control-frame. Implementations may process the control message up to the amount received, but MUST not treat the message as done. Implementations SHOULD finish sending the control-message as soon as possible and when finished with the particular control message, they MUST set MSG_DONE. What do people think about the FLAGS/TYPE arrangement? If swapped, we gain more contiguous reserved bits. -=R
Received on Tuesday, 5 February 2013 22:28:56 UTC