SCTP wymaga więcej projektowania w aplikacji, aby jak najlepiej go wykorzystać. Jest więcej opcji niż TCP, API podobne do Sockets pojawiło się później i jest młode. Myślę jednak, że większość osób, które go rozumieją (i znają wady protokołu TCP), docenia to - jest to dobrze zaprojektowany protokół, który opiera się na naszej ~ 30-letniej wiedzy na temat TCP i UDP.
Jednym z aspektów wymagających przemyślenia jest kwestia strumieni. Strumienie zapewniają (zazwyczaj myślę, że można to wyłączyć) gwarancję zamówienia w nich (podobnie jak połączenie TCP), ale może istnieć wiele strumieni na połączenie SCTP. Jeśli dane Twojej aplikacji mogą być przesyłane wieloma strumieniami, unikniesz blokowania linii, w której odbiornik głoduje z powodu jednego zagubionego pakietu. Efektywnie różne rozmowy można prowadzić przez to samo połączenie, nie wpływając na siebie nawzajem.
Kolejnym przydatnym dodatkiem jest obsługa wielu baz danych - jedno połączenie może być realizowane przez wiele interfejsów na obu końcach i radzi sobie z awariami. Możesz to emulować w TCP, ale w warstwie aplikacji.
Prawidłowe bicie serca łącza, które jest pierwszą rzeczą, w której każda aplikacja korzystająca z TCP do implementacji połączeń nie-przejściowych jest dostępne za darmo.
Moje osobiste podsumowanie SCTP jest takie, że nie robi nic, czego nie można zrobić w inny sposób (w TCP lub UDP) przy znacznej obsłudze aplikacji. Zapewnia to możliwość samodzielnego wdrażania tego kodu (źle).
FYI, SCTP jest wymagane jako obsługiwane dla Diameter (patrz RADIUS następnej generacji). patrz RFC 3588
Klienci obsługujący średnice MUSZĄ obsługiwać protokół TCP lub SCTP, podczas gdy agenci i
serwery MUSZĄ obsługiwać oba. Przyszłe wersje tej specyfikacji MAY
upoważnić klientów do obsługi SCTP.