SCTP ( Stream Control Transmission Protocol ),即流媒体控制传输协议,是一种可靠的基于无连接数据包网络如IP网络之上传输协议。他被设计用来在IP网络上传输PSTN在窄带信令消息,同时也能支持宽带信令消息的传输。
SCTP可以看作OSI层次结构中的传输层,它的上层作为SCTP用户应用,下层为分组网络IP层。
一个SCTP分组含了一个公共的分组头(Common Header)和若干数据块(Chunk),每个数据块中既可以包含控制信息,也可以包含用户数据。
除了INIT、INIT ACK和SHUTDOWN COMPLETE数据块外,其他类型的多个数据块可以捆绑在一个SCTP分组中,以满足对MTU大小的要求。当然,这些数据块也可以不与其他数据块捆绑在一个分组中。如果一个用户消息不能放在一个SCTP分组中,这个消息可以被分成若干个数据块。
字段 | 长度 | 描述 |
---|---|---|
Source Port Number | 16比特的无符号整数 | 源端口号,识别SCTP发送端点的SCTP端口号。接收方可以使用源端口号、源IP地址、目的端口号和目的IP地址标识该SCTP分组所属的偶联。 |
Destination Port Number | 16比特的无符号整数 | 目的端口号,为目的端点的SCTP端口号。接收主机可以使用目的端口号将SCTP分组复用到正确的端点或应用中。 |
Verification Tag | 32比特的无符号整数 | 验证标签是偶联建立时,本端端点为这个偶联生成一个随机标识。偶联建立过程中,双方会交换这个TAG,到了数据传递时,发送端必须在公共分组头中带上对端的这个TAG,以备校验。
|
Checksum | 32比特的无符号整数 | SCTP通过对用户数据使用ADLER-32算法,计算出一个32位的校验码,带在数据报中,在接收端进行同样的运算,通过检查校验码是否相等来验证用户数据是否遭到破坏。 |
Chunk Type | 8比特的无符号整数 | 块类型定义在块值(Chunk Value)中消息所属的类型。包括:INIT、INIT ACK、SACK、ABORT、ERROR、SHUTDOWN、COOKIE
ACK等13种数据块类型。 该参数的取值范围为0~254,255留作今后的扩展。 数据块类型字段的编码分配如下:
Chunk type的高两位bit指示了收端不认识对应的chunk type的处理原则:
|
Chunk Flags | 8比特的无符号整数 | 块标志位用法由块类型决定。除非被置为其他值,块标记在传送过程中会被置0而且接收端点会忽视块标记。 |
Chunk Length | 16比特的无符号整数 | 块长度用来表示包括块类型、块标记、块长度和块值在内的字节数,长度使用二进制表示。 |
Chunk Value | 变长 | 块值字段是在该数据块中真正传送的信息,内容由数据块类型决定。块值的长度为不定长。 |
标准 | 描述 |
---|---|
RFC 2960 | Stream Control Transmission Protocol |