我最近检查出的书“UNIX网络编程,第1卷”由理查德·史蒂文斯,我发现有除了TCP和UDP第三传输层标准:SCTP。
总结:SCTP是传输级协议,该协议是消息驱动像UDP,但可靠如TCP。 这是一个从IBM developerWorks上简短的介绍 。
老实说,我从来没有听说过SCTP之前。 我不记得阅读关于它在任何网络书籍或在我采取了班听到它。 阅读其他计算器的问题是提到SCTP表明,我不是一个人有这种知识的缺乏。
为什么这么SCTP未知? 为什么不多用?
我最近检查出的书“UNIX网络编程,第1卷”由理查德·史蒂文斯,我发现有除了TCP和UDP第三传输层标准:SCTP。
总结:SCTP是传输级协议,该协议是消息驱动像UDP,但可靠如TCP。 这是一个从IBM developerWorks上简短的介绍 。
老实说,我从来没有听说过SCTP之前。 我不记得阅读关于它在任何网络书籍或在我采取了班听到它。 阅读其他计算器的问题是提到SCTP表明,我不是一个人有这种知识的缺乏。
为什么这么SCTP未知? 为什么不多用?
事实上,SCTP主要用于在电信领域。 传统上,电信交换机使用SS7( 7号信令系统 )的电信网中互连不同的实体。 例如 - 电信提供商的订户数据库(HLR),具有开关(MSC),该用户被连接太(MSC)。
电信领域正在向更高的速度和更可达环境。 其中一个变化是由一些更优雅,快速和灵活的基于IP的协议,以取代SS7协议。
电信领域是非常保守的。 SS7网络已经在这里使用了几十年。 这是非常可靠的和封闭的网络。 这意味着一个普通用户无法对其进行访问。
IP网络,相反,是开放的,不可靠的,和电信不会转换成它,如果它不能处理至少是SS7处理负荷。 这就是为什么SCTP开发。 它会尝试:
Linux的最新版本已经有SCTP的支持。
我们一直在部署在几个应用SCTP,以及遇到各种家用路由器SCTP支持显著的问题。 他们根本就没有正确处理SCTP。 我认为这主要是一个性能问题(SCTP协议的规范要求校验和重新计算所有分组而不是只为头)。
像其他许多有前途的协议SCTP是在水中黯然死去,直到d-Link和Netgear的修复他们破碎的NAT设备。
SCTP需要在应用程序中更多的设计得到的尽其用。 还有比TCP更多的选择,在套接字类API后来,这是年轻的。 不过我认为,花时间最多的人去了解它(谁知道TCP的缺点),欣赏它 - 这是一个精心设计的协议,进一步巩固了我们〜30岁的TCP和UDP的知识。
其中一个需要一些思考的方面就是流。 流提供(通常情况下,我认为你可以将其关闭)在它们的订单保证(很像一个TCP连接),但可以有每个SCTP连接多个数据流。 如果您的应用程序的数据可以发送到多个流,那么你避免头的线端阻塞,其中接收器饿死由于一个放错地方的分组。 有效地不同的对话就可以了在不影响彼此相同的连接。
另一种有用的另外的是,多归属支持 - 一个连接可以是在多个接口上两端,并将其与故障对应。 您可以在TCP仿效这一点,但在应用层。
适当的链接心跳,这是第一件事就是使用TCP的非暂时性的连接工具的任何应用程序,有没有免费的。
我个人SCTP的总结是,它没有做任何事情你不能做的另一种方式(在TCP或UDP)有大量的应用支持。 它提供的东西是不必执行代码(严重)自己的能力。
仅供参考,如支持直径(CF RADIUS下一代)SCTP的任务。 参见RFC 3588
Diameter clients MUST support either TCP or SCTP, while agents and servers MUST support both. Future versions of this specification MAY mandate that clients support SCTP.
SCTP是不是很知名,而不是使用/部署了很多,因为:
P1。 SCTP直接映射在IPv4需要NAT网关,它从来没有被广泛部署在任何地方的支持,没有它典型的NAT网关将只允许每个公共地址一个专用主机采用SCTP同时要。
P2。 SCTP映射在UDP / IPv4的允许每公网地址更多的私人主机,但在支持IPv4 / NAT网关UDP映射是出了名的棘手的建立和保持维持,由于这样的事实,UDP是没有任何明确的状态的连接传输的NAT追踪。
P3。 SCTP直接映射在IPv6需要......好了IPv6。 你有没有试过部署IPv6? 如果是这样,你试图买一个IPv6防火墙? 它支持SCTP? 如何负载均衡? 一个SSL加速器?
P4。 最后,大量的互联网是相当多的限制什么可以通过TCP端口80和443配合,所以任何味道SCTP往往失去存在。 因此,你看到这样的努力MPTCP在IETF工作组。
我们许多人将很快采用SCTP,因为它使用的WebRTC datachannels建立在UDP上一个类似TCP可靠层- SCTP在DTLS通过UDP: https://tools.ietf.org/html/draft-ietf -rtcweb数据信道-13#部-6-
读SCTP维基百科页面我会说,主要的原因是,SCTP是一个非常年轻的协议(2000年提出),这是目前主流的操作系统(Windows和OS X,Linux)的不支持。
如果“非常年轻”似乎不合适你,想想IPV6 :“在2008年12月,虽然标志着其10周年作为标准跟踪协议,IPv6的只是在它的一般全球部署方面处于起步阶段。”
它可能不是众所周知的,但它不是使用。 就在最近出现了一个草案在公布的IETF有关使用SCTP作为HTTP传输层协议 。
SCTP是4G LTE网络,其中直径用于AAA中广泛使用。
在谈到所有关于商用路由器的意见被打破或缺乏SCTP的支持,问题是与NAT是SCTP仍然是与IETF草案形式。 因此,有他们来实现它没有RFC规范。
https://tools.ietf.org/html/draft-ietf-behave-sctpnat-09
SCTP出生太晚了,而且许多情况下TCP就够了。
另外,因为我知道大部分使用的是电信领域。