共212 次浏览

SCTP协议(一)

最近学到了一种新的通讯协议,SCTP(Stream Control Transmission Protocol)流控制传输协议。他是位于传输层的协议,与TCP,UDP协议处于同一层级。说起来它的历史,还有点久远,是在2000年时,由IETF(因特网工程任务组)定义的协议。但是至今并没有大面积的使用。

我们首先不去看长篇大论的介绍文章。以我目前的了解来看,先简单总结归纳几点SCTP的要点,我们对于SCTP的认识就差不多了。剩下的详细的介绍,我们再去参考枯燥的文献。

以我目前对SCTP的学习认识来看,这个协议有以下几个特点:

1.SCTP可以看作是TCP协议的改进版,它很好的继承了TCP协议的拥塞控制,同时又对TCP协议的不足做了改正。那么下文我也会拿SCTP和TCP作比较来更好的介绍SCTP。

2.SCTP与TCP的最大不同之处在于它是多宿主连接,而TCP是单地址连接。TCP的单地址链接是指,两个端点都只有一个IP地址进行传输。但是SCTP不同,SCTP在建立链接时会向对方声明多个IP地址(IPv4,IPv6或者主机名),告诉对方自己的所有地址,当目前的链接失效时,可切换至另一个IP地址而不需要创建连接。

3.一个TCP只支持一个流,但是一个SCTP的连接支持多个流。在SCTP中,流是指从一个SCTP端点到另一个端点之间建立的单向逻辑通路,通常情况下所有用户消息在流中按序传递。

4.SCTP具有更好的安全性,它吸取了TCP的教训,可以很好的防止泛洪攻击,具有更高的可靠性。TCP由于其三次握手的特点,很容易被实施SYN泛洪攻击,大量消耗半连接池,而使服务器拥塞或者瘫痪。TCP使用的三次握手四次挥手的方式创建链接和断开链接,但是SCTP的链接和断开不一样,SCTP正好相反,使用四次握手建立链接,三次挥手断开链接。具体的四次握手和三次挥手会在下文进行讲解。

5.TCP的传输是以字节流为单位,但是SCTP的传输是以消息流为单位。

以上就是目前对于SCTP的一个大体了解,下面着重讲解一下SCTP的四次握手和三次挥手

一、SCTP的四次握手与三次挥手

SCTP与TCP刚好相反,采用四次握手与三次挥手。首先来看四次握手过程:
1.服务器必须事先做好链接的准备,通常调用socket、bind和listen来完成。这个时候服务器称作被动打开。
2.客户端通过调用 connect 或者发送一个隐式打开该关联的消息进行主动打开。这使得客户SCTP发送一个INIT消息,该消息告诉服务器客户的IP地址清单、初始化序列号、用于表示本关联中所有分组的起始标记、客户请求的外出流的数目以及客户能够支持的外来刘的数目。
3.服务器以一个INIT ACK 消息确认客户的INIT消息,其中含有服务器的IP地址清单、初始化序列号、起始标记、服务器请求的外出流的数目、服务器能够支持的外来流的数目以及一个状态cookie。状态cookie包含服务器用于确信本关联有效所需的所有状态,它是数字化签名过的,以确保其有效性。
4.客户端以一个COOKIE ECHO消息回射服务器的状态cookie。除COOKIE ECHO外,该消息可能在同一个分组中还捆绑了用户数据。
5.服务器以一个COOKIE ACK消息确认客户回射的cookie是正确的,本关联于是建立。该消息也可能在同一个分组中还捆绑了用户数据。

SCTP的三次挥手断开链接的过程中,免去了像TCP协议中的TIME_WAIT窗口期。TCP协议在断开时是需要一个半关联的状态时期,期间Client不再向Server发送数据,但是仍然会接受Server发来的数据,这时候Server会在发送完所有未结束的数据之后,再次向Client发送一个数据包。这个半关联时期才算结束。但是SCTP没有这个半关联的窗口期,SCTP的断开过程为:

1.Client发送关闭(shutdown)块来告知Server,自己要准备断开链接了。同时Client进入SHUTDOWN-SENT状态,不再接收上层应用的数据,而是只发送目前手中的数据。
2.Server接收到关闭块后,进入SHUTDOWN-RECEIVED状态,同样不再接收上层应用的数据,只发送手里的数据。
3.Client再次发送关闭块,表示剩余数据已经发送完毕,并且重申要关闭链接。
4.Server发送确认关闭(shutdown-ack)块,表示确定要关闭链接。
5.Client发送关闭结束(shutdown-complete)完成链接的关闭

值得注意的时,图中客户发送的shutdown其实已经是我们上面五个步骤中第三步的shutdown块了

 

好啦,这一期我们就先讲这些,在下一篇文章《SCTP协议(二)》我会整理出以下三点:
1.SCTP为什么能够抵御SYN攻击?
2.SCTP的多重串流与路径多宿。
3.SCTP的SACK机制。

 

 

 

 

此条目发表在学习总结分类目录,贴了, , 标签。将固定链接加入收藏夹。