SCTP DATA报文格式
SCTP DATA数据段用于封装用户数据。
一、SCTP DATA数据块报文格式
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
+-------------------------------+-------------------------------+ ---
| Source Port Number | Destination Port Number | ^
+-------------------------------+-------------------------------+ |
| Verification Tag | Common Header
+---------------------------------------------------------------+ |
| Checksum | V
+---------------+---------------+-------------------------------+ ---
| Type = 0 | Reserved|U|B|E| Length |
+---------------+---------------+-------------------------------+
| TSN |
+-------------------------------+-------------------------------+
| Stream Identifier S | Stream Sequence Number n |
+-------------------------------+-------------------------------+
| Payload Protocol Identifier |
+---------------------------------------------------------------+
| User Data (seq n of Stream S) |
+ +
| ... ... |
+---------------------------------------------------------------+
二、SCTP DATA数据块报文格式解释
字段 | 长度 | 描述 |
---|---|---|
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位的校验码,带在数据报中,在接收端进行同样的运算,通过检查校验码是否相等来验证用户数据是否遭到破坏。 |
Type | 8比特 | Type = 0:净荷数据(DATA)。 |
Reserved | 5比特 | 预留,应当设置为全0,在接收方忽略。 |
U | 1比特 | U比特称为非顺序比特。如果该比特设置为1,则指示这是一个非顺序的DATA数据块,不需要给该数据块分配流顺序号码,所有接收方必须忽略流顺序号码。在重新组装完成后(如果需要),非顺序的数据块不需要尝试任何重新排序的过程,可以由接收方直接递交到高层;如果一个非顺序的用户消息被分段,则消息的每个分段中的U比特必须被设置为1。 |
B | 1比特 | B比特称为分段开始比特。如果该比特被设置,则指示这是用户消息的第一个分段。 |
E | 1比特 |
E比特称为分段结束比特。如果该比特被设置,则指示这是用户消息的最后一个分段。一个未分段的用户消息应当把所有的B和E比特设置为1。如果B和E比特都设置为0,则表明这是一个分段的用户消息的一个中间分段。当用户消息被分段到多个数据块中,接收方需要使用TSN对消息进行重组,这意味着给分段的用户消息的每个分段都必须要使用连续的TSN。 BE比特的取值含义如下:
|
Length | 16比特 | 该字段用来指示DATA数据块从类型字段开始到用户数据字段结束之间的字节数,但不包含任何填充字节,如果DATA数据块的用户数据字段为0,则长度字段设为16。 |
TSN | 32比特 | 该值表示该数据块的TSN,TSN的有效值从0~2 -1。TSN的值达到4294967295后将回转到0。 |
Stream Identifier S | 16比特 | 该字段用来识别用户数据属于的流。 |
Stream Sequence Number n | 16比特 | 该值用来表示所在流中的用户数据的顺序号码。该字段的有效值为0~65535。当一个用户消息被SCTP分段后,则必须在消息的每个分段中都带有相同的流顺序号码。 |
Payload Protocol Identifier | 32比特 | 该值表示一个应用(或上层协议)特定的协议标识符。这个值由高层协议传递到SCTP并发送到对等层。这个标识符不由SCTP使用,但却可以由特定的网络实体或对等的应用来识别在DATA数据块中携带的信息类型。甚至在每个分段的DATA数据块中也应包含该字段(以确保对网络中间的代理可用)。0表示高层未对该协议净荷规定应用标识符。其中“M2UA”协议净荷使用编码2;“M3UA”协议净荷使用编码3;“SUA”协议净荷使用编码4;“M2PA”协议净荷使用的编码待定。 |
User Data | 变长 | 用来携带用户数据净荷。该字段必须被填充为4字节的整数情,发送方填充的字节数应不超过3个字节,接收方忽略所有的填充字节。 |
三、SCTP DATA数据块报文示例
Frame 1: 534 bytes on wire (4272 bits), 534 bytes captured (4272 bits)
Encapsulation type: Ethernet (1)
Arrival Time: Aug 15, 2011 14:47:22.445981000
[Time shift for this packet: 0.000000000 seconds]
Epoch Time: 1313390842.445981000 seconds
[Time delta from previous captured frame: 0.000000000 seconds]
[Time delta from previous displayed frame: 0.000000000 seconds]
[Time since reference or first frame: 0.000000000 seconds]
Frame Number: 1
Frame Length: 534 bytes (4272 bits)
Capture Length: 534 bytes (4272 bits)
[Frame is marked: False]
[Frame is ignored: False]
[Protocols in frame: eth:ethertype:ip:sctp:data]
Ethernet II, Src: 00:25:9e:17:0d:85 (00:25:9e:17:0d:85), Dst: 00:25:9e:21:e1:46 (00:25:9e:21:e1:46)
Destination: 00:25:9e:21:e1:46 (00:25:9e:21:e1:46)
Address: 00:25:9e:21:e1:46 (00:25:9e:21:e1:46)
.... ..0. .... .... .... .... = LG bit: Globally unique address (factory default)
.... ...0 .... .... .... .... = IG bit: Individual address (unicast)
Source: 00:25:9e:17:0d:85 (00:25:9e:17:0d:85)
Address: 00:25:9e:17:0d:85 (00:25:9e:17:0d:85)
.... ..0. .... .... .... .... = LG bit: Globally unique address (factory default)
.... ...0 .... .... .... .... = IG bit: Individual address (unicast)
Type: IP (0x0800)
Frame check sequence: 0xc7130613 [correct]
[FCS Good: True]
[FCS Bad: False]
Internet Protocol Version 4, Src: 10.21.112.2 (10.21.112.2), Dst: 10.168.199.137 (10.168.199.137)
Version: 4
Header Length: 20 bytes
Differentiated Services Field: 0xe0 (DSCP 0x38: Class Selector 7; ECN: 0x00: Not-ECT (Not ECN-Capable Transport))
1110 00.. = Differentiated Services Codepoint: Class Selector 7 (0x38)
.... ..00 = Explicit Congestion Notification: Not-ECT (Not ECN-Capable Transport) (0x00)
Total Length: 516
Identification: 0xfb34 (64308)
Flags: 0x00
0... .... = Reserved bit: Not set
.0.. .... = Don't fragment: Not set
..0. .... = More fragments: Not set
Fragment offset: 0
Time to live: 64
Protocol: SCTP (132)
Header checksum: 0xd817 [validation disabled]
[Good: False]
[Bad: False]
Source: 10.21.112.2 (10.21.112.2)
Destination: 10.168.199.137 (10.168.199.137)
[Source GeoIP: Unknown]
[Destination GeoIP: Unknown]
Stream Control Transmission Protocol, Src Port: 9999 (9999), Dst Port: 9999 (9999)
Source port: 9999
Destination port: 9999
Verification tag: 0xee7e1930
[Assocation index: 0]
Checksum: 0xa1de767f (not verified)
DATA chunk(ordered, complete segment, TSN: 2494709885, SID: 0, SSN: 22864, PPID: 0, payload length: 468 bytes)
Chunk type: DATA (0)
0... .... = Bit: Stop processing of the packet
.0.. .... = Bit: Do not report
Chunk flags: 0x03
.... ...1 = E-Bit: Last segment
.... ..1. = B-Bit: First segment
.... .0.. = U-Bit: Ordered delivery
.... 0... = I-Bit: Possibly delay SACK
Chunk length: 484
TSN: 2494709885
Stream Identifier: 0x0000
Stream sequence number: 22864
Payload protocol identifier: not specified (0)
Data (468 bytes)
Data: 010001d4c000013c01000023105006bbc60506bb00000107...
[Length: 468]
发表评论