如何确定sctp软件包中的块数?

时间:2019-01-10 19:58:32

标签: networking sctp

SCTP协议具有以下格式的软件包:  -源端口号  -目标端口号  -验证标签  -校验和  -N个块

我正在尝试编写协议的低杠杆解析器,但我不知道如何确定SCTP包中的块数。 谢谢!

1 个答案:

答案 0 :(得分:0)

您需要解析块头。每个字段在8位类型和8位标志字段之后都包含一个16位长度字段。请记住,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数据包的末尾。

块的长度包括构成类型,标志和长度字段的四个字节。