SCTP协议具有以下格式的包:-源端口号-目标端口号-验证标签-校验和-N块
我正在尝试编写协议的低级别解析器,但我不知道如何确定SCTP包中的块数。谢谢
您需要解析区块头。每个字段在8位类型&8位标志字段。请记住,SCTP中的所有数值都是按网络字节顺序(big-endian)排列的。
区块字段记录在RFC 4960第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公共头字段描述之后。
通过读取Chunk Length字段,您可以跳过它的有效负载并找到下一个Chunk的开始。重复执行此操作,直到到达IP数据包的末尾。
块的长度包括构成类型的四个字节、标志&长度字段。