第38页 SCTP关联的建立-四路握手
- 章节名:SCTP关联的建立-四路握手
- 页码:第38页
建立一个SCTP关联的时候会发生下述情形(类似于TCP)
1. 服务器必须准备好接受外来的关联。这通常通过调用socket、bind和listen这3个函数来完成,称为被动打开。
2. 客户通过调用connect或者发送一个隐式打开该关联的消息进行主动打开。这使得客户SCTP发送给一个INIT消息(初始化),该消息告诉服务器客户的IP地址清单、初始序列号、用于标识本关联中所有分组的起始标记、客户请求的外出流的数目以及客户能够支持的外来流的数目。
3. 服务器以一个INIT ACK消息确认客户的INIT消息,其中含有服务器的IP地址清单、初始序列号、起始标记、服务器请求的外出流的数目、服务器能够支持的外来流的数目以及一个状态cookie。状态cookie包含服务器用于确信本关联有效所需的所有状态,它是数字化签名过的,以确保其有效性。
4. 客户以一个COOKIE ECHO消息回射服务器的状态cookie。除COOKIE ECHO外,该消息可能在同一个分组中还捆绑了用户数据。
5. 服务器以一个COOKIE ACK消息确认客户回射的cookie是正确的,本关联于是建立。该消息也可能在同一个分组中还捆绑了用户数据。
以上交换过程至少需要4个分组,因此称之为SCTP的四路握手(four-way handshake)。
SCTP的四路握手在很多方面类似于TCP的三路握手,差别主要在于作为SCTP整体一部分的cookie的生成。INIT(随其众多参数一道)承载一个验证标记Ta和一个初始序列号J。在关联的有效期内,验证标记Ta必须在对端发送的每个分组中出现。初始序列号J用作承载用户数据的DATA块的起始序列号。对端也在INIT ACK中承载一个验证标记Tz,在关联的有效期内,验证标记Tz也必须在其发送的每个分组中出现。除了验证标记Tz和初始序列号K外,INIT的接收端还在作为响应的INIT ACK中提供一个cookie C。该cookie包含设置本SCTP关联所需的所有状态,这样服务器的SCTP栈就不必保存所有关联客户的有关信息。
四路握手过程结束时,两端各自选择一个主目的地址(primary destination address)。当不存在网络故障时,主目的地址将用作数据要发送到的默认目的地。
在SCTP中使用四路握手是为了避免拒绝服务攻击。
TCP中cookiei状态必须编码到只有32位长的初始序列号中。SCTP为此提供了一个任意长度的字段,并且要求实施基于加密的安全性以防护攻击。
超级露对本书的所有笔记 · · · · · ·
-
第35页 TCP状态转换图
-
第36页 TCP连接的分组交换
-
第38页 SCTP关联的建立-四路握手
-
第39页 SCTP关联终止
SCTP不像TCP那样允许“半关闭”的关联。当一端关闭某个关联时,另一端必须停止发送新的数据。...
-
第40页 SCTP状态转换图及SCTP关联中的分组交换
说明 · · · · · ·
表示其中内容是对原文的摘抄
