Lo Stream Control Transmission Protocol (SCTP) è un protocollo di livello trasporto standardizzato dall'IETF nell'Ottobre del 2000. Il protocollo è definito nell'RFC 2960 mentre l'RFC 3286 ne fornisce una introduzione generale. SCTP svolge le funzioni del livello trasporto (come TCP o UDP) appoggiandosi su un servizio di rete a pacchetto come IP. SCTP è un protocollo unicast in grado di fornire un servizio simile a quello offerto da TCP, effettuando la consegna ordinata ed affidabile dei dati. I controlli di flusso e congestione sono eseguiti nello stile di TCP, rendendo SCTP un protocollo TCP-friendly. Diversamente da TCP il flusso di informazioni non consiste in un unico bitstream ma in una sequenza di messaggi utente frammentati in DATA chunk.
I principali benefici che derivano dall'uso di SCTP sono:
Supporto al multi-homing, cioè la caratteristica di un personal computer di possedere diverse interfaccie di rete. Quando uno o entrambi gli endpoint possiedono diversi indirizzi IP, ogni host stabilisce un indirizzo primario verso cui inviare i dati. Verso un secondo indirizzo vengono inviati i DATA chunk ritrasmessi mentre tutti i restanti indirizzi sono utilizzati per scopi di ridondanza.
La consegna dei dati avviene attraverso stream indipendenti in maniera tale da evitare inutili problemi di head-of-line blocking. All'interno di ciascuno stream la sequenza può essere mantenuta oppure no.
Un meccanismo di creazione dell'associazione SCTP basato su una four-way handshake, cioè con lo scambio di quattro pacchetti. Questo meccanismo permette al protocollo di essere invulnerabile agli attacchi di flooding.
SCTP nasce con l'obiettivo di fornire uno strumento efficace per trasportare informazioni di segnalazione su reti IP ma può essere utilizzato anche per applicazioni diverse.
Implementazioni
SCTP è implementato nei seguenti sistemi operativi: