- 浏览: 148335 次
-
文章分类
最新评论
与 TCP 一样,SCTP 也是面向连接的,因而也有关联的建立和终止的握手过程。
建立一个 SCTP 连接时发生的情形如下:
1、服务器必须准备好接受外来的连接。这通常通过调用 socket、bind 和 listen 这 3 个函数来完成,称为被动打开。
2、客户通过调用 connect 或者发送一个隐式打开该连接的消息进行主动打开。这使得客户 SCTP 发送一个 INIT 消息,用以告诉服务器客户的 IP 地址清单、初始序列号、用于标识本关联中所有分组的起始标记、客户请求的外出流的数目以及能够支持的外来流的数目。
3、服务器以一个 INIT ACK 消息确认客户的 INIT 消息,其中含有服务器的 IP 地址清单、初始序列号、起始标记、服务器请求的外出流的数目、服务器能够支持的外来流的数目以及一个数字签名过的状态 cookie。,其中包含了服务器用于确信本关联有效所需的所有状态,这样服务器的 SCTP 栈就不必保存所关联客户的有关信息。
4、客户以一个 COOKIE ECHO 消息回射服务器的状态 cookie。该消息也可能在同一个分组中捆绑了用户数据。
5、服务器以一个 COOKIE ACK 消息确认客户回射的 cookie 是正确的,连接建立成功。同样,该消息也可能捆绑了用户数据。
本过程至少需要 4 个分组,故称为 SCTP 的四路握手(four-way handshake)。下图展示了这个过程:
SCTP 的四路握手与 TCP 的三路握手的差别主要在于作为 SCTP 整体一部分的 cookie 的生成。INIT 承载一个验证标记 Ta 和一个初始序列号 J。在之后关联的有效期内,另一方发送的每个分组中必须出现该 Ta 标记。同样,对端发送的 INIT ACK 中承载的 Tz 标记之后也必须出现在本端发送的每个分组中。
四路握手过程结束时,两端各自选择一个主目的地址,作为无网络故障发生时数据要发送到的默认目的地。
在SCTP 中使用四路握手是为了避免某种形式的拒绝服务攻击。SCTP 使用 cookie 的四路握手定形了一种防护这种攻击的方法。TCP 的许多实现也使用类似的方法,但 TCP 中 cookie 状态必须编码到只有 32 位长的初始序列号中,而 SCTP 为此提供了一个任意长度的字段,并且要求实施基于加密的安全性以防护攻击。
对于 SCTP 连接的终止,SCTP 不像 TCP 那样允许“半关闭”的关联。当一端关闭某个连接时,另一端必须停止发送新的数据。连接关闭请求的接收端发送完已经排队的数据(如果有的话)后,完成关联的关闭。下图展示了这一交换过程:
SCTP 没有类似于 TCP 的 TIME_WAIT 状态,因为 SCTP 使用了验证标记。所有后续块都在捆绑它们的 SCTP 分组的公共首部标记了初始的 INIT 块和 INIT ACK 块中作为起始标记交换的验证标记。由来自旧连接的块通过所在的 SCTP 分组的公共首部间接携带的验证标记对于新连接来说是不正确的。因此,SCTP 通过放置验证标记值就避免了 TCP 在 TIME_WAIT 状态保持整个连接的做法。
同 TCP 一样,SCTP 的连接和终止过程也可用状态转换图来说明。
从一个状态转换到另一个状态是由 SCTP 规则基于当前状态及在该状态下所接收的块来规定的。举例来说,当某个应用进程在 CLOSED 状态下执行主动打开时,SCTP 将发送一个 INIT,且新的状态是 COOKIE-WAIT。如果该 SCTP 接着接收到一个 INIT ACK,它将发送一个 COOKIE ECHO,且新的状态是 COOKIE-ECHOED。若其随后又接收到一个 COOKIE ACK,它将转换成 ESTABLISHED 状态。该最终状态是绝大多数数据传送发生点的状态,尽管 DATA 块也可以由 COOKIE ECHO 块或 COOKIE ACK 块所在消息捆绑捎带。从 ESTABLISHED 状态引出的两个箭头处理连接的终止。如果某个应用进程在接收到一个 SHUTDOWN 之前调用 close(主动关闭),那就转换到 SHUTDOWN-PENDING 状态;否则,如果接收到一个 SHUTDOWN(被动关闭)
,那就切换到 SHUTDOWN-RECEIVED 状态。
下图展示了 SCTP 连接建立、数据传输和连接终止 3 个阶段所发生的实际分组交换情况,以及每个端点所历经的 SCTP 状态。
图中,客户在 COOKIE ECHO 块所在分组中捎带了它的第一个 DATA 块,服务器则在作为应答的 COOKIE ACK 块分组中捎带了数据。一般而言,当网络应用采用一到多接口式样时,COOKIE ECHO 通常都会捎带一个或多个 DATA 块。
SCTP 分组中消息的单位称为块(chunk)。块是自描述的,包含一个块类型、若干个块标记和一个块长度。这样做方便了多个块的绑缚,只需要把它们简单地组合到一个 SCTP 外出消息即可。
建立一个 SCTP 连接时发生的情形如下:
1、服务器必须准备好接受外来的连接。这通常通过调用 socket、bind 和 listen 这 3 个函数来完成,称为被动打开。
2、客户通过调用 connect 或者发送一个隐式打开该连接的消息进行主动打开。这使得客户 SCTP 发送一个 INIT 消息,用以告诉服务器客户的 IP 地址清单、初始序列号、用于标识本关联中所有分组的起始标记、客户请求的外出流的数目以及能够支持的外来流的数目。
3、服务器以一个 INIT ACK 消息确认客户的 INIT 消息,其中含有服务器的 IP 地址清单、初始序列号、起始标记、服务器请求的外出流的数目、服务器能够支持的外来流的数目以及一个数字签名过的状态 cookie。,其中包含了服务器用于确信本关联有效所需的所有状态,这样服务器的 SCTP 栈就不必保存所关联客户的有关信息。
4、客户以一个 COOKIE ECHO 消息回射服务器的状态 cookie。该消息也可能在同一个分组中捆绑了用户数据。
5、服务器以一个 COOKIE ACK 消息确认客户回射的 cookie 是正确的,连接建立成功。同样,该消息也可能捆绑了用户数据。
本过程至少需要 4 个分组,故称为 SCTP 的四路握手(four-way handshake)。下图展示了这个过程:

SCTP 的四路握手与 TCP 的三路握手的差别主要在于作为 SCTP 整体一部分的 cookie 的生成。INIT 承载一个验证标记 Ta 和一个初始序列号 J。在之后关联的有效期内,另一方发送的每个分组中必须出现该 Ta 标记。同样,对端发送的 INIT ACK 中承载的 Tz 标记之后也必须出现在本端发送的每个分组中。
四路握手过程结束时,两端各自选择一个主目的地址,作为无网络故障发生时数据要发送到的默认目的地。
在SCTP 中使用四路握手是为了避免某种形式的拒绝服务攻击。SCTP 使用 cookie 的四路握手定形了一种防护这种攻击的方法。TCP 的许多实现也使用类似的方法,但 TCP 中 cookie 状态必须编码到只有 32 位长的初始序列号中,而 SCTP 为此提供了一个任意长度的字段,并且要求实施基于加密的安全性以防护攻击。
对于 SCTP 连接的终止,SCTP 不像 TCP 那样允许“半关闭”的关联。当一端关闭某个连接时,另一端必须停止发送新的数据。连接关闭请求的接收端发送完已经排队的数据(如果有的话)后,完成关联的关闭。下图展示了这一交换过程:

SCTP 没有类似于 TCP 的 TIME_WAIT 状态,因为 SCTP 使用了验证标记。所有后续块都在捆绑它们的 SCTP 分组的公共首部标记了初始的 INIT 块和 INIT ACK 块中作为起始标记交换的验证标记。由来自旧连接的块通过所在的 SCTP 分组的公共首部间接携带的验证标记对于新连接来说是不正确的。因此,SCTP 通过放置验证标记值就避免了 TCP 在 TIME_WAIT 状态保持整个连接的做法。
同 TCP 一样,SCTP 的连接和终止过程也可用状态转换图来说明。

从一个状态转换到另一个状态是由 SCTP 规则基于当前状态及在该状态下所接收的块来规定的。举例来说,当某个应用进程在 CLOSED 状态下执行主动打开时,SCTP 将发送一个 INIT,且新的状态是 COOKIE-WAIT。如果该 SCTP 接着接收到一个 INIT ACK,它将发送一个 COOKIE ECHO,且新的状态是 COOKIE-ECHOED。若其随后又接收到一个 COOKIE ACK,它将转换成 ESTABLISHED 状态。该最终状态是绝大多数数据传送发生点的状态,尽管 DATA 块也可以由 COOKIE ECHO 块或 COOKIE ACK 块所在消息捆绑捎带。从 ESTABLISHED 状态引出的两个箭头处理连接的终止。如果某个应用进程在接收到一个 SHUTDOWN 之前调用 close(主动关闭),那就转换到 SHUTDOWN-PENDING 状态;否则,如果接收到一个 SHUTDOWN(被动关闭)
,那就切换到 SHUTDOWN-RECEIVED 状态。
下图展示了 SCTP 连接建立、数据传输和连接终止 3 个阶段所发生的实际分组交换情况,以及每个端点所历经的 SCTP 状态。

图中,客户在 COOKIE ECHO 块所在分组中捎带了它的第一个 DATA 块,服务器则在作为应答的 COOKIE ACK 块分组中捎带了数据。一般而言,当网络应用采用一到多接口式样时,COOKIE ECHO 通常都会捎带一个或多个 DATA 块。
SCTP 分组中消息的单位称为块(chunk)。块是自描述的,包含一个块类型、若干个块标记和一个块长度。这样做方便了多个块的绑缚,只需要把它们简单地组合到一个 SCTP 外出消息即可。
发表评论
-
Unix 域套接字与描述符的传递
2019-03-27 23:59 739在Unix 域套接字概述一节中介绍了什么是 U ... -
Unix 域套接字概述
2019-03-12 22:48 1013Unix 域协议并不是一个实际的协议族,而是在 ... -
kqueue 接口
2019-03-06 00:47 792kqueue 接口是 ... -
辅助数据
2019-02-28 00:40 765辅助数据(a ... -
recv/send 和 recvmsg/sendmsg 函数
2019-01-22 00:40 1664recv 和 send ... -
inetd 守护进程介绍
2019-01-09 21:51 1093在 4.3 BSD 系统之前,很多网络服务都是 ... -
主机名与 IP 地址的转换(续)
2018-12-25 00:37 989在主机名与 IP 地址的转换一节中提到的 ge ... -
主机名与 IP 地址的转换
2018-11-14 00:20 2443在网络编程中,尽管大部分情况下操作的都是 IP ... -
SCTP 事件通知
2018-02-08 03:49 1056SCTP 提供了多种可用的通知,用户可经由这些通知追踪 ... -
SCTP 套接字选项
2018-02-04 09:35 1762在获取和设置套接 ... -
SCTP 套接字编程基础函数
2018-02-04 10:08 1157SCTP 服务器可以使 ... -
SCTP 套接字编程基础概念
2018-01-18 00:10 595SCTP 套接字分为一到一套接字和一到多套接字。提供一 ... -
UDP套接字编程基础
2018-01-14 10:37 614下图显示了使用 UDP 套接字编写客户/服务器程序时的 ... -
通用套接字选项
2018-01-02 00:46 578在获取和设置套接 ... -
获取和设置套接字选项
2017-12-29 08:21 469下面几种方法可用 ... -
I/O 复用之 poll 函数
2017-12-27 00:20 492poll 函数提供的功能与 select 类似,不过在 ... -
I/O 复用之select 函数
2017-12-12 00:32 580select 函数允许进 ... -
Unix 5 种 IO 模型概述
2017-11-19 01:44 334Unix 下有 5 种可用 ... -
套接字创建、连接和关闭函数
2017-08-13 17:16 703下图是一对 TCP 客户与服务器进程之间发生的一些典型 ... -
字节转换和填充函数
2017-08-06 01:09 466网络编程中,为保证发送协议栈和接收协议栈就如 32 位 ...
相关推荐
SCTP关联的状态转换非常复杂,涉及到多种状态及其转换条件。 #### 十、关联初始化 关联初始化过程是SCTP中最复杂的部分之一,涉及到了多个步骤,包括: 1. **处理流参数**:确定流的数量和属性。 2. **处理地址...
- **TIME_WAIT状态**:解释了TCP连接关闭后的TIME_WAIT状态以及该状态存在的原因和必要性。 - **SCTP关联建立与终止**:讨论了SCTP协议中的关联建立与终止过程。 - **端口号**:讲解了端口号的概念及其在TCP/IP通信...
嵌入式八股文面试题库资料知识宝典-华为的面试试题.zip
训练导控系统设计.pdf
嵌入式八股文面试题库资料知识宝典-网络编程.zip
人脸转正GAN模型的高效压缩.pdf
少儿编程scratch项目源代码文件案例素材-几何冲刺 转瞬即逝.zip
少儿编程scratch项目源代码文件案例素材-鸡蛋.zip
嵌入式系统_USB设备枚举与HID通信_CH559单片机USB主机键盘鼠标复合设备控制_基于CH559单片机的USB主机模式设备枚举与键盘鼠标数据收发系统支持复合设备识别与HID
嵌入式八股文面试题库资料知识宝典-linux常见面试题.zip
面向智慧工地的压力机在线数据的预警应用开发.pdf
基于Unity3D的鱼类运动行为可视化研究.pdf
少儿编程scratch项目源代码文件案例素材-霍格沃茨魔法学校.zip
少儿编程scratch项目源代码文件案例素材-金币冲刺.zip
内容概要:本文深入探讨了HarmonyOS编译构建子系统的作用及其技术细节。作为鸿蒙操作系统背后的关键技术之一,编译构建子系统通过GN和Ninja工具实现了高效的源代码到机器代码的转换,确保了系统的稳定性和性能优化。该系统不仅支持多系统版本构建、芯片厂商定制,还具备强大的调试与维护能力。其高效编译速度、灵活性和可扩展性使其在华为设备和其他智能终端中发挥了重要作用。文章还比较了HarmonyOS编译构建子系统与安卓和iOS编译系统的异同,并展望了其未来的发展趋势和技术演进方向。; 适合人群:对操作系统底层技术感兴趣的开发者、工程师和技术爱好者。; 使用场景及目标:①了解HarmonyOS编译构建子系统的基本概念和工作原理;②掌握其在不同设备上的应用和优化策略;③对比HarmonyOS与安卓、iOS编译系统的差异;④探索其未来发展方向和技术演进路径。; 其他说明:本文详细介绍了HarmonyOS编译构建子系统的架构设计、核心功能和实际应用案例,强调了其在万物互联时代的重要性和潜力。阅读时建议重点关注编译构建子系统的独特优势及其对鸿蒙生态系统的深远影响。
嵌入式八股文面试题库资料知识宝典-奇虎360 2015校园招聘C++研发工程师笔试题.zip
嵌入式八股文面试题库资料知识宝典-腾讯2014校园招聘C语言笔试题(附答案).zip
双种群变异策略改进RWCE算法优化换热网络.pdf