linux网络编程之SCTP协议

1、SCTP协议的介绍

       SCTP(Stream Control Transmission Protocol,流量控制传输协议)是IETF(Internet Engineering Task Force,因特网工程任务组)在2000年定义的一个传输层(Transport Layer)协议,是提供基于不可靠传输业务的协议之上的可靠的数据报传输协议, SCTP协议是众多网络通信协议中的一种,为更好的理解SCTP协议,我们先来介绍协议栈 ,协议栈是指网络中各层协议的总和,它形象的反映了网络中消息的传输过程:即由上层应用协议到底层协议,再由底层传输协议到上层协议。


2、SCTP和TCP的对比

SCTP是一个面向连接的流传输协议,它可以在两个端点之间提供稳定、有序的数据传递服务。SCTP可以看做是TCP协议的改进,它继承了TCP较为完善的拥塞控制并改进TCP的一些不足之处:
l SCTP与TCP的最大不同之处在于它是多宿主(Multi-homing)连接,而TCP是单地址连接。
l 一个TCP连接只能支持一个流,一个SCTP连接可以支持多个流(Multi-streaming)。在SCTP协议中,流(Stream)是指从一个SCTP端点到另一端点之间建立的单向逻辑通路,通常情况下所有用户消息在流中按序传递。
l SCTP有更好的安全性。
SCTP实际上是一个面向连接的协议,但SCTP偶联的概念要比TCP的连接具有更广的概念,SCTP对TCP的缺陷进行了一些完善,使得信令传输具有更高的可靠性,SCTP的设计包括适当的拥塞控制、防止泛滥和伪装攻击、更优的实时性能和多归属性支持。
SCTP最初是被设计用于在IP上传输电话,把SS7(Signaling System No. 7,七号信令系统)信令网络的一些可靠特性引入IP。IETF的这方面的工作称为信令传输SIGTRAN。与此期间,也提出了这个协议的其他一些用途。
SCTP提供如下服务:
l 确认用户数据的无错误和无复制传输;
l 数据分段以符合发现路径最大传输单元的大小;
l 在多数据流中用户信息的有序发送,带有一个选项,用户信息可以按到达顺序发送;
l 选择性的将多个用户信息绑定到单个SCTP包;
l 通过关联的一个终端或两个终端多重宿主支持来为网络故障规定容度。

作为一个传输层协议,SCTP兼有TCP及UDP两者的特点。SCTP可以称为是TCP的改进协议,但它们之间仍然存在着较大的差别。
l 首先SCTP和TCP之间的最大区别是SCTP的连接可以是多宿主连接的,TCP则一般是单地址连接的。在进行SCTP建立连接时,双方均可声明若干IP地址(IPv4,IPv6或主机名)通知对方本端所有的地址。若当前连接失效,则可切换到另一个地址,而不需要重新建立连接。
l 其次SCTP是基于消息流,而TCP则是基于字节流。所谓基于消息流,是指发送数据和应答数据的最小单位是消息包(chunk)。一个SCTP连接(Association)同时可以支持多个流(stream),每个流包含一系列用户所需的消息数据(chunk)。而TCP则只能支持一个流。
l 在网络安全方面,SCTP增加了防止恶意攻击的措施。不同于TCP连接采用的三次握手机制,SCTP连接采用四次握手机制,有效的防止了类似于SYN Flooding的防范拒绝服务攻击。SCTP主要的贡献是对多重联外线路的支持,一个端点可以由多于一个IP地址组成,使得传输可在主机间或网卡间做到透明的网络容错备援。



你可能感兴趣的:(Linux,网络编程)