SCTP通用报文格式

SCTP ( Stream Control Transmission Protocol ),即流媒体控制传输协议,是一种可靠的基于无连接数据包网络如IP网络之上传输协议。他被设计用来在IP网络上传输PSTN在窄带信令消息,同时也能支持宽带信令消息的传输。

SCTP可以看作OSI层次结构中的传输层,它的上层作为SCTP用户应用,下层为分组网络IP层。

图1 SCTP所处的协议栈结构

SCTP报文格式

一个SCTP分组含了一个公共的分组头(Common Header)和若干数据块(Chunk),每个数据块中既可以包含控制信息,也可以包含用户数据。

除了INIT、INIT ACK和SHUTDOWN COMPLETE数据块外,其他类型的多个数据块可以捆绑在一个SCTP分组中,以满足对MTU大小的要求。当然,这些数据块也可以不与其他数据块捆绑在一个分组中。如果一个用户消息不能放在一个SCTP分组中,这个消息可以被分成若干个数据块。

图2 SCTP报文格式
字段 长度 描述
Source Port Number 16比特的无符号整数 源端口号,识别SCTP发送端点的SCTP端口号。接收方可以使用源端口号、源IP地址、目的端口号和目的IP地址标识该SCTP分组所属的偶联。
Destination Port Number 16比特的无符号整数 目的端口号,为目的端点的SCTP端口号。接收主机可以使用目的端口号将SCTP分组复用到正确的端点或应用中。
Verification Tag 32比特的无符号整数

验证标签是偶联建立时,本端端点为这个偶联生成一个随机标识。偶联建立过程中,双方会交换这个TAG,到了数据传递时,发送端必须在公共分组头中带上对端的这个TAG,以备校验。

  • 包含INIT数据块的分组中验证标签必须为0。
  • 在包含SHUTDOWN-COMPLETE数据块且设置了T比特的分组中,验证标签必须要从包含 SHUTDOWN-ACK数据块的分组中复制。
  • 在包含ABORT数据块的分组中,验证标签必须要从触发这个ABORT发送的分组中复制。
Checksum 32比特的无符号整数 SCTP通过对用户数据使用ADLER-32算法,计算出一个32位的校验码,带在数据报中,在接收端进行同样的运算,通过检查校验码是否相等来验证用户数据是否遭到破坏。
Chunk Type 8比特的无符号整数 块类型定义在块值(Chunk Value)中消息所属的类型。包括:INIT、INIT ACK、SACK、ABORT、ERROR、SHUTDOWN、COOKIE ACK等13种数据块类型。

该参数的取值范围为0~254,255留作今后的扩展。

数据块类型字段的编码分配如下:

  • 0:净荷数据(DATA)
  • 1:启动(INIT)
  • 2:启动证实 (INIT ACK)
  • 3:选择证实 (SACK)
  • 4:Heartbeat请求(HEARTBEAT)
  • 5:Heartbeat证实(HEARTBEAT ACK)
  • 6:中止 (ABORT)
  • 7:关闭(SHUTDOWN)
  • 8:关闭证实(SHUTDOWN ACK)
  • 9:操作差错(ERROR)
  • 10:状态Cookie(COOKIE ECHO)
  • 11:Cookie证实(COOKIE ACK)
  • 12:为明确拥塞通知响应(ECNE)预留
  • 13:为降低拥塞窗口(CWR)预留
  • 14:关闭完成(SHUTDOWN COMPLETE)
  • 15~62:IETF预留
  • 63:IETF定义的数据块扩展
  • 64~126:IETF预留
  • 127:IETF定义的数据块扩展
  • 128~190:IETF预留
  • 191:IETF定义的数据块扩展
  • 192~254:IETF预留
  • 255:IETF定义的数据块扩展

Chunk type的高两位bit指示了收端不认识对应的chunk type的处理原则:

  • 00:停止处理数据报并丢弃,不再处理报中的其他Chunk。
  • 01:与00相同处理外,还要在ERROR或INIT ACK中上报,原因为不认识的参数类型。
  • 10:忽略该Chunk ,继续处理数据报中的其他Chunk。
  • 11:同10相同处理外,还要在ERROR中上报,原因为不认识的Chunk类型。
Chunk Flags 8比特的无符号整数 块标志位用法由块类型决定。除非被置为其他值,块标记在传送过程中会被置0而且接收端点会忽视块标记。
Chunk Length 16比特的无符号整数 块长度用来表示包括块类型、块标记、块长度和块值在内的字节数,长度使用二进制表示。
Chunk Value 变长

块值字段是在该数据块中真正传送的信息,内容由数据块类型决定。块值的长度为不定长。

SCTP报文交互流程

图3 Association建立流程
图4 Association关闭流程(Ungraceful)
图5 Association关闭流程(Graceful)
图6 数据包的发送和确认流程

参考标准

标准 描述
RFC 2960 Stream Control Transmission Protocol

本资料收集于互联网
2016 ©