SCTP (Stream Control Transmission Protocol) is a protocol for transmitting multiple streams of data at the same time between two end points that have established a connection in a network. Sometimes referred to as "next generation TCP" (Transmission Control Protocol) - or TCPng, SCTP is designed to make it easier to support a telephone connection over the Internet (and specifically to support the telephone system's Signaling System 7 - SS7 - on an Internet connection). A telephone connection requires that signaling information (which controls the connection) be sent along with voice and other data at the same time. SCTP also is intended to make it easier to manage connections over a wireless network and to manage the transmission of multimedia data. SCTP is a standard protocol (RFC 2960) developed by the Internet Engineering Task Force (IETF).
Like TCP, SCTP manages "reliable transport" (ensuring the complete arrival of data units that are sent over the network) over the Internet's basically connectionless Internet Protocol (IP), the protocol responsible for moving the data but not for managing whether all the data arrives. Unlike TCP, SCTP ensures the complete concurrent transmission of several streams of data (in units called messages) between connected end points. SCTP also supports multihoming, which means that a connected end point can have alternate IP addresses associated with it in order to route around network failure or changing conditions.
TCP transmits data in a single stream (sometimes called a bytestream) and guarantees that data will be delivered in sequence to the application or user at the end point. If there is data loss, or a sequencing error, delivery must be delayed until lost data is retransmitted or an out-of-sequence message is received. SCTP's multi-streaming allows data to be delivered in multiple, independent streams, so that if there is data loss in one stream, delivery will not be affected for the other streams. For some transmissions, such as a file or record, sequence preservation is essential. However, for some applications, it is not absolutely necessary to preserve the precise sequence of data. For example, in signaling transmissions, sequence preservation is only necessary for messages that affect the same resource (such as the same channel or call). Because multi-streaming allows data in error-free streams to continue delivery when one stream has an error, the entire transmission is not delayed.