SCTP需要在应用程序中进行更多设计才能充分利用它。除了TCP以外,还有更多的选择,类似Sockets的API后来出现了,而且还很年轻。但是,我认为大多数花时间了解它的人(并且知道TCP的缺点)都赞赏它-它是一个经过精心设计的协议,它建立在我们对TCP和UDP的30多年的知识基础上。
需要考虑的方面之一是流。流在其中提供(通常,我认为您可以将其关闭)一个顺序保证(很像TCP连接),但是每个SCTP连接可以有多个流。如果您的应用程序的数据可以通过多个流发送,那么您可以避免由于一个未正确放置的数据包而导致接收器饿死的行头阻塞。在同一个连接上可以有效地进行不同的对话,而不会互相影响。
另一个有用的补充是多宿主支持-一个连接可以跨越两端的多个接口,并且可以应对故障。您可以在TCP中但在应用程序层上对此进行仿真。
正确的链接心跳是免费的,这是任何使用TCP进行非瞬态连接的应用程序实现的第一件事。
我对SCTP的个人总结是,它没有任何其他您可以通过大量应用程序支持以其他方式(在TCP或UDP中)完成的工作。它提供的功能是不必自己(很难)实现该代码的能力。
仅供参考,Diameter必须支持SCTP(参见RADIUS下一代)。参见RFC 3588
直径客户端必须支持TCP或SCTP,而代理和
服务器必须同时支持两者。本规范的未来版本
要求客户支持SCTP。