SCTP требует больше дизайна в приложении, чтобы наилучшим образом использовать его. Есть больше опций, чем TCP, Socket-подобный API появился позже, и он молодой. Тем не менее, я думаю, что большинство людей, которые находят время, чтобы понять это (и знают недостатки TCP), ценят это - это хорошо разработанный протокол, основанный на наших ~ 30-летних знаниях TCP и UDP.
Один из аспектов, который требует некоторого размышления, - это потоки. Потоки обеспечивают (обычно, я думаю, вы можете отключить) гарантию порядка внутри них (во многом как TCP-соединение), но на SCTP-соединение может быть несколько потоков. Если данные вашего приложения могут быть отправлены по нескольким потокам, тогда вы избегаете блокировки заголовка строки, когда приемник голодает из-за одного потерянного пакета. По одному и тому же соединению можно вести разные разговоры, не влияя друг на друга.
Еще одним полезным дополнением является поддержка множественной адресации - одно соединение может быть подключено к нескольким интерфейсам на обоих концах, и оно справляется со сбоями. Вы можете эмулировать это в TCP, но на уровне приложений.
Правильное сердцебиение канала связи, которое является первым, что любое приложение, использующее TCP для нестационарных соединений, доступно бесплатно.
Моя личная сводка по SCTP - это то, что он не делает ничего, что вы не могли бы сделать другим способом (в TCP или UDP) с существенной поддержкой приложений. Он предоставляет возможность не реализовывать этот код (плохо) самостоятельно.
К вашему сведению, SCTP предписан как поддерживается для Diameter (ср. RADIUS следующего поколения). см. RFC 3588
Клиенты Diameter ДОЛЖНЫ поддерживать TCP или SCTP, а агенты и
серверы ДОЛЖНЫ поддерживать оба. Будущие версии этой спецификации МОГУТ
требует, чтобы клиенты поддерживали SCTP.