如何确定 sctp 包中的块数?
How can I determine number of blocks in sctp package?
SCTP协议的包格式如下:
- 源端口号
- 目标端口号
- 验证标签
- 校验和
- N 块
我正在尝试编写协议的低级别解析器,但我不知道如何确定 SCTP 包中的块数。
谢谢!
您需要解析块头。每个都包含一个 16 位长度字段,在 8 位类型和 8 位标志字段之后。请记住,SCTP 中的所有数值均采用网络字节顺序(大端)。
块字段记录在RFC 4960 section 3.2:
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
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
| Chunk Type | Chunk Flags | Chunk Length |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
\ \
/ Chunk Value /
\ \
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
块在 SCTP Common Header Field Descriptions 之后开始。
通过读取块长度字段,您可以跳过其有效负载并找到下一个块的开始。重复此操作,直到到达 IP 数据包的末尾。
块的长度包括构成类型、标志和长度字段的四个字节。
SCTP协议的包格式如下: - 源端口号 - 目标端口号 - 验证标签 - 校验和 - N 块
我正在尝试编写协议的低级别解析器,但我不知道如何确定 SCTP 包中的块数。 谢谢!
您需要解析块头。每个都包含一个 16 位长度字段,在 8 位类型和 8 位标志字段之后。请记住,SCTP 中的所有数值均采用网络字节顺序(大端)。
块字段记录在RFC 4960 section 3.2:
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
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
| Chunk Type | Chunk Flags | Chunk Length |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
\ \
/ Chunk Value /
\ \
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
块在 SCTP Common Header Field Descriptions 之后开始。
通过读取块长度字段,您可以跳过其有效负载并找到下一个块的开始。重复此操作,直到到达 IP 数据包的末尾。
块的长度包括构成类型、标志和长度字段的四个字节。