The SCTP message structure
facilitates packaging bundled control and data
essages in a single format. Figure
3 shows the format of an SCTP packet: A common header is followed by one or
more variable- length chunks, which use a type-length-value (TLV) format.
Different chunk types are used to carry control or data information inside an
SCTP packet. The SCTP common header contains source and destination port
addresses that are used with the source and destination IP addresses to
identify the recipient of the SCTP packet.
Checksum value to assure data
integrity while the packet transits an IP network; and Verification tag that
holds the value of the initiation tag first exchanged during the handshake. Any
SCTP packet in an association that does not include this tag will be dropped on
arrival. The verification tag protects against old, stale packets arriving from
a previous association, as well as various “man-in-the-middle” attacks, and it
obviates the need for TCP’s timed-wait state, which consumes resources and
limits the number of total connections a host can accommodate.
Every chunk type includes TLV
header information that contains the chunk type,
delivery processing flags, and a
length field. In addition, a DATA chunk will precede user payload information
with the transport sequence number (TSN), stream identifier, stream sequence
number (SSN), and payload protocol identifier. The TSN and SSN provide two
separate sequence numbers on every DATA chunk. The TSN is used for
per-association reliability and the SSN is for perstream ordering. The stream identifier
marks individual messages within the same stream.
Figure 4 shows an example of a
normal data exchange between two SCTP hosts. An SCTP host sends selective
acknowledgments (SACK chunks) in response to every other SCTP packet carrying
DATA chunks. The SACK fully describes the receiver’s state, so that the sender
can make retransmission decisions based on what has been received. SCTP
supports fast retransmit and time-out retransmission algorithms similar to
those in TCP.
With few exceptions, most chunk
types can be bundled together in one SCTP packet. (SACKs often get bundled
during two-way exchanges of user data.) One bundling restriction is that
control chunks must be placed ahead of any DATA chunks in the packet.
0 comments