【问题标题】:How can I determine number of blocks in sctp package?如何确定 sctp 包中的块数?
【发布时间】:2019-06-05 18:13:26
【问题描述】:

SCTP 协议的包格式如下: - 源端口号 - 目标端口号 - 验证标签 - 校验和 - N 块

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

【问题讨论】:

  • “N 个块”字段有多大,它的字节顺序是什么,到目前为止你有什么代码?
  • N 个块不是一个字段。我的意思是它是一个或多个数据块。每个块都有特定的格式,但我没有找到关于包中数据块编号的信息,或者可能应该标记最后一个块?

标签: networking sctp


【解决方案1】:

您需要解析块标头。每个都包含一个 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 数据包的末尾。

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

【讨论】:

    猜你喜欢
    • 2021-12-27
    • 2011-10-08
    • 2012-10-19
    • 2020-01-01
    • 1970-01-01
    • 2013-02-20
    • 2015-04-24
    • 1970-01-01
    • 2014-10-27
    相关资源
    最近更新 更多