3.3. SCTP Chunk 定义 - 续
3.3.3. Initiation Acknowledgement (INIT ACK) (2)
INIT ACK chunk 用于确认 SCTP 关联的发起.
INIT ACK 的参数部分格式与 INIT chunk 类似. 它使用两个额外的可变参数: State Cookie 和 Unrecognized Parameter.
INIT ACK chunk 的格式如下:
0 1 2 3
0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
| Type = 2 | Chunk Flags | Chunk Length |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
| Initiate Tag |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
| Advertised Receiver Window Credit |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
| Number of Outbound Streams | Number of Inbound Streams |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
| Initial TSN |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
\ \
/ Optional/Variable-Length Parameters /
\ \
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
Initiate Tag: 32 bits (unsigned integer)
INIT ACK 的接收方记录 Initiate Tag 参数的值. 该值必须放入 INIT ACK 接收方在此关联内发送的每个 SCTP 分组的 Verification Tag 字段中.
Initiate Tag 不得取值 0. 关于 Initiate Tag 值选择的更多信息见 Section 5.3.1.
如果收到的 INIT ACK chunk 中 Initiate Tag 的值为 0, 接收方必须销毁该关联并丢弃其 TCB. 接收方可以出于调试目的发送 ABORT.
Advertised Receiver Window Credit (a_rwnd): 32 bits (unsigned integer)
该值表示 INIT ACK 发送方为此窗口关联保留的专用缓冲区空间, 以字节数表示. 在关联生命周期内, 此缓冲区空间不应该减少 (即不应从该关联取走专用缓冲区).
Number of Outbound Streams (OS): 16 bits (unsigned integer)
定义此 INIT ACK chunk 的发送方希望在该关联中创建的出站流数量. 值 0 不得使用, 且该值不得大于 INIT chunk 中发送的 MIS 值.
注: 收到 OS 值为 0 的 INIT ACK 时, 接收方应该销毁该关联并丢弃其 TCB.
Number of Inbound Streams (MIS): 16 bits (unsigned integer)
定义此 INIT ACK chunk 的发送方允许对端在该关联中创建的最大流数量. 值 0 不得使用.
注: 实际流数量并不通过协商得到, 两个端点将使用 min(requested, offered). 详见 Section 5.1.1.
注: 收到 MIS 值为 0 的 INIT ACK 时, 接收方应该销毁该关联并丢弃其 TCB.
Initial TSN (I-TSN): 32 bits (unsigned integer)
定义 INIT ACK 发送方将使用的初始 TSN. 有效范围为 0 到 4294967295. 该字段可以设置为 Initiate Tag 字段的值.
Fixed Parameters Status
----------------------------------------------
Initiate Tag Mandatory
Advertised Receiver Window Credit Mandatory
Number of Outbound Streams Mandatory
Number of Inbound Streams Mandatory
Initial TSN Mandatory
Variable Parameters Status Type Value
-------------------------------------------------------------
State Cookie Mandatory 7
IPv4 Address (Note 1) Optional 5
IPv6 Address (Note 1) Optional 6
Unrecognized Parameter Optional 8
Reserved for ECN Capable (Note 2) Optional 32768 (0x8000)
Host Name Address (Note 3) Optional 11
注 1: INIT ACK chunk 可包含任意数量的 IP address 参数, 这些地址可以是 IPv4 和/或 IPv6 的任意组合.
注 2: ECN Capable 字段保留用于将来的 Explicit Congestion Notification.
注 3: INIT ACK chunk 不得包含超过一个 Host Name Address 参数. 此外, INIT ACK 发送方不得在 INIT ACK 中将任何其他地址类型与 Host Name Address 组合. 如果存在 Host Name Address 参数, INIT ACK 接收方必须忽略任何其他地址类型.
3.3.3.1. 可选或可变长度参数
State Cookie
Parameter Type Value: 7
Parameter Length: 可变大小, 取决于 Cookie 的大小.
Parameter Value:
该参数值必须包含此 INIT ACK 发送方创建关联所需的全部必要状态和参数信息, 以及 Message Authentication Code (MAC). State Cookie 定义的细节见 Section 5.1.3.
Unrecognized Parameter:
Parameter Type Value: 8
Parameter Length: 可变大小.
Parameter Value:
当 INIT 包含一个未识别参数, 且该参数的值表明应向发送方报告时, 此参数会返回给 INIT chunk 的发起者. 此参数值字段将包含从 INIT chunk 复制的未识别参数, 并完整带有 Parameter Type,Length 和 Value 字段.
3.3.4. Selective Acknowledgement (SACK) (3)
此 chunk 发送给对等端点, 用于确认收到的 DATA chunk, 并告知对等端点按 TSN 表示的已接收 DATA chunk 子序列中的缺口.
SACK 必须包含 Cumulative TSN Ack,Advertised Receiver Window Credit (a_rwnd),Number of Gap Ack Blocks 和 Number of Duplicate TSNs 字段.
按定义, Cumulative TSN Ack 参数的值是接收 TSN 序列出现中断之前最后收到的 TSN; 该值之后的下一个 TSN 尚未被发送该 SACK 的端点收到. 因此, 此参数确认接收了所有小于或等于其值的 TSN.
SACK 接收方对 a_rwnd 的处理详见 Section 6.2.1.
SACK 还包含零个或多个 Gap Ack Block. 每个 Gap Ack Block 确认接收 TSN 序列中断之后收到的一段 TSN 子序列. 按定义, Gap Ack Block 确认的所有 TSN 都大于 Cumulative TSN Ack 的值.
0 1 2 3
0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
| Type = 3 |Chunk Flags | Chunk Length |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
| Cumulative TSN Ack |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
| Advertised Receiver Window Credit (a_rwnd) |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
| Number of Gap Ack Blocks = N | Number of Duplicate TSNs = X |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
| Gap Ack Block #1 Start | Gap Ack Block #1 End |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
/ /
\ ... \
/ /
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
| Gap Ack Block #N Start | Gap Ack Block #N End |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
| Duplicate TSN 1 |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
/ /
\ ... \
/ /
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
| Duplicate TSN X |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
Chunk Flags: 8 bits
发送时设置为全 '0', 接收时忽略.
Cumulative TSN Ack: 32 bits (unsigned integer)
该参数包含缺口之前按序收到的最后一个 DATA chunk 的 TSN. 如果尚未收到任何 DATA chunk, 此值设置为对端 Initial TSN 减一.
Advertised Receiver Window Credit (a_rwnd): 32 bits (unsigned integer)
该字段以字节为单位指示此 SACK 发送方更新后的接收缓冲区空间; 详见 Section 6.2.1.
Number of Gap Ack Blocks: 16 bits (unsigned integer)
指示此 SACK 中包含的 Gap Ack Block 数量.
Number of Duplicate TSNs: 16 bit
该字段包含端点已收到的重复 TSN 数量. 每个重复 TSN 都列在 Gap Ack Block 列表之后.
Gap Ack Blocks:
这些字段包含 Gap Ack Block. 它们按 Number of Gap Ack Blocks 字段定义的数量重复, 每个 Gap Ack Block 一个. 对每个 Gap Ack Block, TSN 大于或等于 (Cumulative TSN Ack + Gap Ack Block Start) 且小于或等于 (Cumulative TSN Ack + Gap Ack Block End) 的所有 DATA chunk 均假定已正确接收.
Gap Ack Block Start: 16 bits (unsigned integer)
指示此 Gap Ack Block 的起始偏移 TSN. 为计算实际 TSN 编号, 将 Cumulative TSN Ack 加上此偏移编号. 计算得到的 TSN 标识此 Gap Ack Block 中已收到的第一个 TSN.
Gap Ack Block End: 16 bits (unsigned integer)
指示此 Gap Ack Block 的结束偏移 TSN. 为计算实际 TSN 编号, 将 Cumulative TSN Ack 加上此偏移编号. 计算得到的 TSN 标识此 Gap Ack Block 中已收到的最后一个 DATA chunk 的 TSN.
Duplicate TSN: 32 bits (unsigned integer)
指示自上一个 SACK 发送以来某个 TSN 被重复接收的次数. 接收方每次收到重复 TSN (在发送 SACK 前), 都将其加入重复列表. 每次发送 SACK 后, 重复计数重新初始化为零.
3.3.5. Heartbeat Request (HEARTBEAT) (4)
端点应向其对等端点发送此 chunk, 以探测当前关联中定义的特定目的传输地址的可达性.
参数字段包含 Heartbeat Information, 这是仅发送方理解的可变长度不透明数据结构.
0 1 2 3
0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
| Type = 4 | Chunk Flags | Heartbeat Length |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
\ \
/ Heartbeat Information TLV (Variable-Length) /
\ \
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
Chunk Flags: 8 bits
发送时设置为 0, 接收时忽略.
Heartbeat Length: 16 bits (unsigned integer)
设置为 chunk 的字节大小, 包括 chunk 头部和 Heartbeat Information 字段.
Heartbeat Information: variable length
按 Section 3.2.1 中描述的格式定义为可变长度参数, 即:
Variable Parameters Status Type Value
-------------------------------------------------------------
Heartbeat Info Mandatory 1
Sender-Specific Heartbeat Info 字段通常应包含发送方发送此 HEARTBEAT chunk 时的当前时间信息, 以及此 HEARTBEAT 发往的目的传输地址 (见 Section 8.3). 该信息由接收方在 HEARTBEAT ACK 消息中简单反射回来 (见 Section 3.3.6). 还要注意, HEARTBEAT 消息既用于可达性检查, 也用于路径验证 (见 Section 5.4). 当 HEARTBEAT chunk 用于路径验证目的时, 它必须持有一个 64 位随机 nonce.
3.3.6. Heartbeat Acknowledgement (HEARTBEAT ACK) (5)
端点应将此 chunk 作为对 HEARTBEAT chunk 的响应发送给其对等端点 (见 Section 8.3). HEARTBEAT ACK 总是发送到包含其所响应 HEARTBEAT chunk 的 IP 数据报的源 IP 地址.
参数字段包含一个可变长度不透明数据结构.
0 1 2 3
0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
| Type = 5 | Chunk Flags | Heartbeat Ack Length |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
\ \
/ Heartbeat Information TLV (Variable-Length) /
\ \
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
Chunk Flags: 8 bits
发送时设置为 0, 接收时忽略.
Heartbeat Ack Length: 16 bits (unsigned integer)
设置为 chunk 的字节大小, 包括 chunk 头部和 Heartbeat Information 字段.
Heartbeat Information: variable length
该字段必须包含其所响应 Heartbeat Request 的 Heartbeat Information 参数.
Variable Parameters Status Type Value
-------------------------------------------------------------
Heartbeat Info Mandatory 1
3.3.7. Abort Association (ABORT) (6)
ABORT chunk 发送给关联的对端, 用于关闭该关联. ABORT chunk 可包含 Cause Parameter, 以告知接收方中止原因. DATA chunk 不得与 ABORT 捆绑. 控制 chunk (INIT,INIT ACK 和 SHUTDOWN COMPLETE 除外) 可以与 ABORT 捆绑, 但它们必须位于 SCTP 分组中 ABORT 之前, 否则接收方将忽略它们.
如果端点收到格式错误的 ABORT, 或未找到 TCB, 它必须静默丢弃该 ABORT. 此外, 在任何情况下, 收到 ABORT 的端点不得通过发送自己的 ABORT 来响应该 ABORT.
0 1 2 3
0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
| Type = 6 |Reserved |T| Length |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
\ \
/ zero or more Error Causes /
\ \
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
Chunk Flags: 8 bits
Reserved: 7 bits
发送时设置为 0, 接收时忽略.
T bit: 1 bit
如果发送方填入了对端期望的 Verification Tag, T bit 设置为 0. 如果 Verification Tag 被反射, T bit 必须设置为 1. 反射表示发送的 Verification Tag 与收到的 Verification Tag 相同.
注: 此 chunk 有特殊的验证规则; 详见 Section 8.5.1.
Length: 16 bits (unsigned integer)
设置为 chunk 的字节大小, 包括 chunk 头部和所有存在的 Error Cause 字段.
Error Cause 定义见 Section 3.3.10.
3.3.8. Shutdown Association (SHUTDOWN) (7)
关联中的端点必须使用此 chunk 向其对端发起关联的优雅关闭. 此 chunk 具有以下格式.
0 1 2 3
0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
| Type = 7 | Chunk Flags | Length = 8 |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
| Cumulative TSN Ack |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
Chunk Flags: 8 bits
发送时设置为 0, 接收时忽略.
Length: 16 bits (unsigned integer)
指示参数长度. 设置为 8.
Cumulative TSN Ack: 32 bits (unsigned integer)
该参数包含任何缺口之前按序收到的最后一个 chunk 的 TSN.
注: 由于 SHUTDOWN 消息不包含 Gap Ack Block, 它不能用于确认乱序收到的 TSN. 在 SACK 中, 缺少先前包含的 Gap Ack Block 表明数据接收方 reneged 了关联的 DATA chunk. 由于 SHUTDOWN 不包含 Gap Ack Block, SHUTDOWN 的接收方不应将缺少 Gap Ack Block 解释为 renege. (关于 reneging 的信息见 Section 6.2.)
3.3.9. Shutdown Acknowledgement (SHUTDOWN ACK) (8)
此 chunk 必须用于在 shutdown 过程完成时确认收到 SHUTDOWN chunk; 详见 Section 9.2.
SHUTDOWN ACK chunk 没有参数.
0 1 2 3
0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
| Type = 8 |Chunk Flags | Length = 4 |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
Chunk Flags: 8 bits
发送时设置为 0, 接收时忽略.
3.3.10. Operation Error (ERROR) (9)
端点向其对等端点发送此 chunk, 以通知某些错误条件. 它包含一个或多个 error cause. Operation Error 本身不被视为致命, 但可与 ABORT chunk 一起用于报告致命条件. 它具有以下参数:
0 1 2 3
0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
| Type = 9 | Chunk Flags | Length |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
\ \
/ one or more Error Causes /
\ \
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
Chunk Flags: 8 bits
发送时设置为 0, 接收时忽略.
Length: 16 bits (unsigned integer)
设置为 chunk 的字节大小, 包括 chunk 头部和所有存在的 Error Cause 字段.
Error cause 定义为可变长度参数, 使用 Section 3.2.1 中描述的格式, 即:
0 1 2 3
0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
| Cause Code | Cause Length |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
/ Cause-Specific Information /
\ \
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
Cause Code: 16 bits (unsigned integer)
定义所报告错误条件的类型.
Cause Code
Value Cause Code
--------- ----------------
1 Invalid Stream Identifier
2 Missing Mandatory Parameter
3 Stale Cookie Error
4 Out of Resource
5 Unresolvable Address
6 Unrecognized Chunk Type
7 Invalid Mandatory Parameter
8 Unrecognized Parameters
9 No User Data
10 Cookie Received While Shutting Down
11 Restart of an Association with New Addresses
12 User Initiated Abort
13 Protocol Violation
Cause Length: 16 bits (unsigned integer)
设置为参数的字节大小, 包括 Cause Code,Cause Length 和 Cause-Specific Information 字段.
Cause-Specific Information: variable length
该字段携带错误条件的详细信息.
3.3.11. State Cookie Echo (COOKIE ECHO) (10)
此 chunk 仅在关联初始化期间使用. 它由 INIT ACK 发送方发送给 INIT 发送方 (见 Section 5.1). 此 chunk 必须位于关联内发送的任何 DATA 或 SACK chunk 之前, 但可以在同一个 SCTP 分组中与一个或多个 DATA chunk 或 SACK chunk 捆绑.
0 1 2 3
0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
| Type = 10 |Chunk Flags | Length |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
/ Cookie /
\ \
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
Chunk Flags: 8 bits
发送时设置为 0, 接收时忽略.
Cookie: variable size
该字段必须包含从先前 INIT ACK 的 State Cookie 参数中收到的精确 cookie.
实现应该使 cookie 尽可能小, 以确保互操作性.
注: Cookie Echo 不包含 State Cookie 参数; 相反, State Cookie 的 Parameter Value 中的数据会成为 Cookie Echo 的 Chunk Value 中的数据. 这允许实现只更改 State Cookie 参数的前 2 字节, 即可成为 COOKIE ECHO chunk.
3.3.12. Cookie Acknowledgement (COOKIE ACK) (11)
此 chunk 仅在关联初始化期间使用. 它用于确认收到 COOKIE ECHO chunk. 此 chunk 必须位于关联内发送的任何 DATA 或 SACK chunk 之前, 但可以在同一个 SCTP 分组中与一个或多个 DATA chunk 或 SACK chunk 捆绑.
0 1 2 3
0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
| Type = 11 |Chunk Flags | Length = 4 |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
Chunk Flags: 8 bits
发送时设置为 0, 接收时忽略.
3.3.13. Shutdown Complete (SHUTDOWN COMPLETE) (14)
此 chunk 必须用于在 shutdown 过程完成时确认收到 SHUTDOWN ACK chunk; 详见 Section 9.2.
SHUTDOWN COMPLETE chunk 没有参数.
0 1 2 3
0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
| Type = 14 |Reserved |T| Length = 4 |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
Chunk Flags: 8 bits
Reserved: 7 bits
发送时设置为 0, 接收时忽略.
T bit: 1 bit
如果发送方填入了对端期望的 Verification Tag, T bit 设置为 0. 如果 Verification Tag 被反射, T bit 必须设置为 1. 反射表示发送的 Verification Tag 与收到的 Verification Tag 相同.
注: 此 chunk 有特殊的验证规则, 详见 Section 8.5.1.
注: 本文档包含 Section 3.3.3 到 Section 3.3.13, 完成 SCTP chunk 定义的完整描述. 第 4 章及后续内容将在后续文档中继续.