3楼 由此可见,采用以上这种方式,即使接收再多的INIT消息, 接收端也没有任何资源的消耗:它既不分配任何系统资源,也不保存此次新关联的状态,它只是把相应重建状态所用的状态Cookie作为参数,包含在每一个回送的INIT-ACK消息中,最后该状态Cookie会被COOKIE-ECHO消息发送回来。
4.2 SCTP数据交换
在两个SCTP主机间的正常数据交换。SCTP主机发送SACK块,用来确认每一个收到的SCTP包。因为SACK能完整地描述接收端的状态,因此,依据SACK,发送端能做出重传判决。SCTP支持类似于TCP中的快速重传和time-out重传算法。
对于数据包丢失发现,SCTP和TCP采用截然不同的机制:当TCP发现接收序号有缺口时,会等到该缺口被填上后,才发送序列号高于丢失数据包的数据。然而,SCTP即使发现接收序号有缺口或顺序错乱,仍会发送后面的数据。
4.3 SCTP关闭关联
作为面向连接的传输协议,SCTP也运用三路握手来关闭一个关联,但与TCP有一点不同:一个TCP终端在“关联关闭”的过程中能够保持连接开启,并从对端接收新的数据,而SCTP不支持TCP的这种“半关闭”状态。 1. 主机A发出“关闭”(SHUTDOWN)块来终止与主机B的关联,主机A进入“SHUTDOWN- PENDING”状态,对应的动作是:不再接受上层应用的数据,只发送队列中剩余的数据,进入“SHUTDOWN-SENT”状态。
2. 主机B一旦接收到“关闭”块,就进入“SHUTDOWN-RECEIVED”状态,同主机A一样,不再接受上层应用的数据,只发送队列中剩余的数据。
3. 主机A再次发送“关闭”块,通知主机 B所发送的剩余数据已到达,并且重申了关联正在关闭。
4. 当第二次收到“关闭”块时,主机B发送“确认关闭”块。
5. 主机A随后发送“关闭结束”块,完成本次关联的关闭。
5 结束语
SCTP是为传输信令业务流而开发的,但它所具有的一些优于TCP的先进协议机制,如选择性确认、快速重传、无序递交等,使它又满足高性能传输的需求,这会给它带来更为宽广的应用需求。目前,已有各种操作系统支持SCTP, 如Linux、AIX、Solaris、Windows、FressBSD。在不同协议实现间的互操作性测试的成功,揭示着SCTP正走向商业产品之路。
IEFT正在致力于SCTP进一步的修改,使其更能满足下一代应用的需求,例如支持IPv6地址,解决对端对于IPv6的site-local、link-local地址无连通性的问题,以及在已存在的关联中动态地增加或删除IP地址而无需重启该关联。
此外,在第三代移动通信中,SCTP可作为信令承载层的备选方案之一,它的应用及其性能评估也有待研究。
参 考 文 献
[1] Stewart R等 . Transmission Control Protocol,IETF RFC 2960
[2] Allman M,Paxson V, Stevens W . TCP Congestion Control,IETF RFC 2581
[3] Mathis M等 . TCP Selective Acknowledgment Option, IETF RFC 2018
[4] Krawczyk H等 . HMAC: Keyed-Hashing for Message Authentication,IETF RFC 2104
[5] Stevens W R . TCP/IP Illustrated, Volume 1: The Protocols . Addison-Wesley |