SCTP richiede una maggiore progettazione all'interno dell'applicazione per sfruttarla al meglio. Ci sono più opzioni di TCP, l'API simile a Socket è arrivata più tardi ed è giovane. Tuttavia, penso che la maggior parte delle persone che impiegano del tempo per capirlo (e che conoscono le carenze di TCP) lo apprezzino: è un protocollo ben progettato che si basa sui nostri ~ 30 anni di conoscenza di TCP e UDP.
Uno degli aspetti che richiede un pensiero è quello dei flussi. I flussi forniscono (di solito, penso che tu possa disattivarlo) una garanzia d'ordine al loro interno (molto simile a una connessione TCP) ma possono esserci più flussi per connessione SCTP. Se i dati dell'applicazione possono essere inviati su più flussi, si evita il blocco head-of-line in cui il ricevitore muore di fame a causa di un pacchetto smarrito. È possibile avere conversazioni effettivamente diverse sulla stessa connessione senza influire reciprocamente.
Un'altra utile aggiunta è quella del supporto multi-homing: una connessione può avvenire attraverso più interfacce su entrambe le estremità e può far fronte a guasti. Puoi emularlo in TCP, ma a livello di applicazione.
Il battito cardiaco corretto del collegamento, che è la prima cosa che qualsiasi applicazione che utilizza TCP per implementare connessioni non transitorie, è disponibile gratuitamente.
Il mio riepilogo personale di SCTP è che non fa nulla che tu non possa fare diversamente (in TCP o UDP) con un sostanziale supporto applicativo. La cosa che fornisce è la capacità di non dover implementare quel codice (male) da soli.
Cordiali saluti, SCTP è obbligatorio come supportato per Diametro (vedi RADIUS next gen). vedi RFC 3588
I client di diametro DEVONO supportare TCP o SCTP, mentre agenti e
i server DEVONO supportare entrambi. Versioni future di questa specifica MAGGIO
mandato che i client supportano SCTP.