Stream Control Transmission Protocol
SCTP, ou Stream Control Transmission Protocol est un protocole défini en 2000 par le groupe SIGTRAN de l'IETF. Le protocole est défini dans la RFC 4960, et un texte d'introduction est fourni dans la RFC 3286.
En tant que protocole de transport, SCTP est équivalent dans un certain sens au TCP ou à l'UDP. En effet, il fournit des services similaires à TCP, assurant optionnellement la fiabilité, la remise en ordre des séquences, et le contrôle de congestion.
Concepts
Alors que TCP est orienté flux (la séquence d'octets contenue dans un paquet n'a pas conceptuellement de début ou de fin, elle fait partie du flux constitué par la connexion), SCTP est, comme UDP, orienté message (au sein d'un flux, il transmet des messages avec un début et une fin, qui peuvent éventuellement être fragmentés sur plusieurs paquets, mais si c'est le cas ce sera fait explicitement).
SCTP sait également gérer plusieurs flux au sein d'une communication. Il sait aussi répartir des flux entre plusieurs adresses IP cibles, afin de faire de la répartition de charge (multi-homing).
Utilisation
À l'origine, SCTP est conçu par le groupe SIGTRAN pour fournir un transport aux autres protocoles qu'il développe. Les protocoles développés par le groupe SIGTRAN ont pour objet de transposer la pile de protocoles SS7, servant aux opérateurs téléphoniques à faire signalisation de voix et de SMS, sur IP.
SCTP est également utilisé pour transporter Diameter, qui est l'équivalent des protocoles SS7 sur les réseaux 4G (même si TCP est parfois utilisé à la place), ainsi que pour l'extension de WebRTC permettant de transporter des flux de données brutes (dans lequel il n'est pas transporté directement sur IP, mais est encapsulé dans DTLS puis UDP).