【问题标题】:Extra byte in TCP- vs RTMP-level packetTCP 与 RTMP 级别数据包中的额外字节
【发布时间】:2020-01-14 03:38:39
【问题描述】:

我正在尝试调试无法连接到某些服务器的 RTMP 客户端。我正在使用 Wireshark 捕获数据包并将它们与成功连接的客户端(在本例中为 ffmpeg)进行比较。

查看成功连接的捕获数据包,我注意到,在 TCP 级别查看时,有效负载中有一个额外的字节(见下图)。额外字节的值为 0xc3,并位于有效负载中的字节 0xc3。

我尽我所能在 Google 上查找有关 TCP 有效负载中额外字节的信息,但我没有找到类似的信息。我试图查看 TCP 规范,但也没有运气。我在哪里可以找到这方面的信息?

TCP 级视图

RTMP 级视图

【问题讨论】:

  • 你能找到任何解决方案吗,我有这个问题

标签: tcp rtmp


【解决方案1】:

这是因为消息长度大于最大块大小(根据 RTMP 规范,默认最大块大小为 128)。因此,如果在connect(在您的情况下)之前没有发送Set Chunk Size 控制消息,并且connect 消息大于128 个字节,则客户端会将消息拆分为多个块。

0xC3 是下一个块的标题,查看 0xC3 的位,我们将拥有11 000011。最高 2 位指定格式(在这种情况下 fmt = 3,这意味着根据规范,下一个块是类型 3 块)。其余 6 位指定块流 ID(在本例中为 3)。因此,您看到的额外字节是新块的标头。然后客户端/服务器必须组装这些块以形成完整的消息。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2013-11-24
    • 1970-01-01
    • 2019-10-22
    • 1970-01-01
    • 1970-01-01
    • 2012-07-25
    相关资源
    最近更新 更多