织梦CMS - 轻松建站从此开始!

罗索

SCTP UDP TCP 的区别

落鹤生 发布于 2012-02-21 10:17 点击:次 
RFC2960制定了面向连接的基于分组的可靠传输协议SCTP协议。SCTP对TCP的缺陷进行了完善,使得信令传输具有更高的可靠性,SCTP的设计 包括适当的拥塞控制、防止泛滥和伪装攻击、更优的实时性能和多归属性支持,因此,SCTP成为SIGTRAN协议族中的传输协议。
TAG:

在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。。。

(jingxshi)
本站文章除注明转载外,均为本站原创或编译欢迎任何形式的转载,但请务必注明出处,尊重他人劳动,同学习共成长。转载请注明:文章转载自:罗索实验室 [http://www.rosoo.net/a/201202/15737.html]
本文出处:百度博客 作者:jingxshi 原文
顶一下
(0)
0%
踩一下
(0)
0%
------分隔线----------------------------
相关文章
发表评论
请自觉遵守互联网相关的政策法规,严禁发布色情、暴力、反动的言论。
评价:
表情:
用户名: 验证码:点击我更换图片
栏目列表
将本文分享到微信
织梦二维码生成器
推荐内容