The Stream Control Transmission Protocol is a transport-layer protocol aimed at transmitting multiple simultaneous streams of data between two points with an established connection in a network.
It serves a similar role to TCP and UDP. It has a lot in common with both, as well: it’s message-oriented like UDP and ensures reliable sequenced message transport like TCP. Originally intended as a fully-compatible replacement for them, it’s easily compatible with most of the same applications they are. Many TCP applications can be converted into STCP with a simple code modification, but it requires more changes to make the best use of it.
Unlike its forbears, though, it manages reliable transport, ensuring the complete arrival of data over the internet’s virtually connectionless internet protocol. And unlike TCP, it ensures that the concurrent streams of data are all complete. And if there is data loss in one stream, the delivery of the other will not be affected. This is essential for certain applications like file or record transmissions. It also prevents delays, since the other streams of data can simply pick up for the first.
Other features include multihoming support, letting you use multiple IP addresses for one or both endpoints of a connection; delivery of chunks within independent streams to get rid of head-of-like blocking where one mislaid packet can mess up the entire process; and unordered service, which is great for applications like iSCSI and RDMA that provide their own order, preventing it from being messed up.
However, it’s not as common as it has the potential to be. Some speculate that it may still be ahead of its time, and that it will see much more use when iPv6 becomes standard. As of now, it’s still used mostly in telecom and telephony, and not provided standard with the most common OSes. Windows and MacOS still require third-party drivers.