The common header, which occupies the first 12 bytes. In the adjacent diagram, this header is highlighted in blue.
The data chunks, which form the remaining portion of the packet. In the diagram, the first chunk is highlighted in green and the last of N chunks (Chunk N) is highlighted in red. There are several types, including payload data as well as different control messages.
Each SCTP packet consists, in addition to the common header, of chunks. Each chunk has a common format, but the contents can vary. The green bytes in the diagram above signify one chunk.
An 8-bit value predefined by the IETF to identify the contents of the chunk value field.
Eight flag-bits whose definition varies with the chunk type. The default value is zero.
A 16-bit unsigned value specifying the total length of the chunk in bytes (excludes any padding) that includes chunk type, flags, length, and value fields.
General purpose data field whose definition varies with the chunk type.
If the chunk length does not equate to a multiple of 4 bytes then the protocol implicitly pads the chunk with trailing zeros.
Optional/variable-length parameter definition
Bits 0 - 15
16 - 31
Additionally, each chunk type may define a set of parameters which it includes inside the chunk value field (and, consequently, their length in the chunk length).
Two types of parameter exist:
fixed parameters — they must appear and in the order specified
variable-length or optional parameters — they appear after the fixed parameters and may appear in any order and in any number.
For optional/variable-length parameters, the parameter type, parameter length, and parameter value fields all behave just like their chunk counterparts. The minimum size of parameter is 4 bytes and this occurs when the parameter value field is empty and the parameter consists only of the type & length fields.
U — If set, this indicates this data is an unordered chunk and the stream sequence number is invalid. If an unordered chunk is fragmented then each fragment has this flag set.
B — If set, this marks the beginning fragment. An unfragmented chunk has this flag set.
E — If set, this marks the end fragment. An unfragmented chunk has this flag set.
The chunk length has a minimum value of 17 as data of size less than one byte is not allowed.
Transmission sequence number (TSN)
The sequence number for the entire DATA stream (used in fragmentation for reassembly).
Identifier of the stream that this data chunk belongs to
Stream sequence number
Identifier of the sequence number for the message in this stream. If a message is fragmented then this value is maintained for all fragments.
Payload protocol identifier
Application-specific protocol identifier. SCTP makes no use of this or modification of it. However, devices along the path or the endpoints may use it. A value of 0 indicates that no payload protocol is specified.
This is the chunk length which has a minimum value of 20 when chunk value is empty and no optional parameters are used
Fixed parameters have identical meaning as INIT ACK:
Unsigned 32-bit number that is used in every SCTP packet in the verification tag within the common header.
Advertised receiver window credit (a_rwnd)
Amount of dedicated buffer space for this association that should never be reduced.
# of outbound streams
Number of outbound streams (from the sender of the INIT) it wishes to use for this association. Zero is an invalid value and the receiver should ABORT the association upon receiving a zero.
# of inbound streams
Identical to # of outbound streams but number of inbound streams. No negotiation takes place on the established number but the minimum of requested and offered should be used.
Initial transmission sequence number to be used and may be any value.
Optional parameters appear with alternating background colors of green and blue:
Parameter type = 5
This parameter lists all the IPv4 addresses used at the sending endpoint. If it is a multihomed connection then the IP address of each may be included.
Parameter type = 6
This parameter lists all the IPv6 addresses used at the sending endpoint. If it is a multihomed connection then the IP address of each may be included.
Parameter type = 9
This parameter provides a suggested life-span increment the receiver should add to its default cookie life-span (in milliseconds).
Parameter type = 11
This parameter is a hostname as defined in RFC 1123, section 2.1. Actual resolution of this name is outside the scope of SCTP. Additionally, a null terminating character must be included and must be included in the parameter length.
Parameter type = 12
This parameter lists the address types the sender supports (e.g., IPv4 = 5, IPv6 = 6, hostname = 11).
Parameter type = 32768
This parameter is reserved for explicit congestion notification support.
^Castagnoli, G.; S. Braeuer; M. nHerrman (June 1993). "Optimization of Cyclic Redundancy-Check Codes with 24 and 32 Parity Bits". IEEE Transactions on Communications. 41 (6): 883. doi:10.1109/26.231911.. Castagnoli's et al. work on algorithmic selection of CRC polynomials