SCTP, or Stream Control Transmission Protocol is a transport layerprotocol defined in 2000 by the IETF. The protocol is defined in RFC 2960, and an introductory text is provided by RFC 3286.
As a transport protocol, SCTP is equivalent in a sense to TCP or UDP. Indeed it provides some similar services as TCP, ensuring reliable, in-sequence transport of messages. Whilst TCP is byte-oriented, SCTP deals with framed messages.
A major contribution of SCTP is multi-homing support, where one (or both) endpoints of a connection can consist of more than one IP address, enabling transparent fail-over between hosts or network cards.
SCTP was originally intended for the transport of telephony (SS7) protocols over IP, with the goal of duplicating some of the reliability attributes of the SS7 signaling network in IP. This IETF effort is known as SIGTRAN. In the meantime, other uses have been proposed for the protocol.
When an SCTP packet is received, the receiver MUST first check the CRC-32c checksum: 1) Store the received CRC-32c value, 2) Replace the 32 bits of the Checksum field in the received SCTP packet with all '0's and calculate a CRC-32c value of the whole received packet.
Implementors of SCTP are warned that both specifications are to be found in the literature, sometimes with no restriction on the long- division algorithm.
Further, packets accepted by the SCTP 'header' CRC are in one-to-one correspondence with packets accepted by a modified procedure using a 'trailer' CRC value, and where the SCTP common checksum header is set to zero on transmission and is received as zero.