SCTP和TCP/UDP相比,有什么不同
发布网友
发布时间:2022-05-31 21:34
我来回答
共1个回答
热心网友
时间:2023-10-30 01:18
SCTP和TCP/UDP相比,有什么不同
在SCTP(Stream Control Transmission
Protocol,流控制传输协议)制定以前,在IP网上传输七号信令使用的是UDP、TCP协议。UDP是一种无连接的传输协议,无法满足七号信令对传
输质量的要求。TCP协议是一种有连接的传输协议,可以信令的可靠传输,但是TCP协议具有行头阻塞、实时性差、支持多归属比较困难、易受拒绝服务攻击
(Dos)的缺陷。因此IETF(Internet Engineering Task Force)
RFC2960制定了面向连接的基于分组的可靠传输协议SCTP协议。SCTP对TCP的缺陷进行了完善,使得信令传输具有更高的可靠性,SCTP的设计
包括适当的拥塞控制、防止泛滥和伪装攻击、更优的实时性能和多归属性支持,因此,SCTP成为SIGTRAN协议族中的传输协议。
SCTP被视为一个传输层协议,它的上层为SCTP用户应用,下层作为分组网络。在SIGTRAN协议的应用中,SCTP上层用户是SCN信令的适配模块(如M2UA、M3UA),下层是IP网。
我也来掺和两句:
就可靠程度:
UDP:不可靠(因为没有确认机制)
TCP:可靠(有三次握手确认机制)
SCTP:非常可靠(四次确认机制)
就安全性:
UDP:不安全(没有什么保护措施)
TCP:一般安全
SCTP:很安全(特意针对TCP的安全缺陷和不足作了改进)
但是就方便‘而言:
UDP:很方便,因为步骤少,没有什么要等的;
TCP:一般方便:三次握手确认,安全保护等;
SCTP:很不方便,处理步骤流程复杂,因此,一般用于系统内部模块或者网元之间通讯。
接楼上的说几句。总的说来sctp和tcp都是面向连接的。但sctp由于支持multi-stream,使得即使单个stream出现阻塞,其它
stream仍能工作。另外由于sctp的multi-homing,使得单个association能使用本地和远端的多个地址,这样即使某个地址
block,数据仍能通过其它路由到达目的地。正常情况下只有主路由在工作。
sctp还是面向消息的协议(INIT、INITACK,etc。。。)这点和UDP、TCP(面向字节流)都不一样,个人感觉更好处理。另外sctp可以基于raw IP(大多情况)但也有基于UDP的。我曾经做过基于UDP的sctp实现,但只用于产品内部接口。
sctp
通信双方可以是平等的,不区分client/server。但从实现出发,也可以采用client/server模型。简单的例子是当SIGTRAN架构
中M3UA采用sctp时,如果是SGP/ASP
mode,通常情况由ASP作为client段,即发出INIT,建立association后再发后续ASPSM消息。
SCTP的安全性体现再INITmessage接收端,发出包含cookie的INIT ACK后不会保留TCB(即系统的资源)以给远端攻击的机会。
还有sctp是可以把多个data chunk*在一个data消息里传输的。sctp的data确认支持有gap的sack。