TCP-vs RTMP级数据包中的额外字节

TCP-vs RTMP级数据包中的额外字节,tcp,rtmp,Tcp,Rtmp,我正在尝试调试一个无法连接到某些服务器的RTMP客户端。我使用Wireshark捕获数据包,并将其与成功连接的客户端(在本例中为ffmpeg)进行比较 查看成功连接捕获的数据包时,我注意到,在TCP级别查看时,负载中有一个额外的字节(参见下面的图片)。额外字节的值为0xc3,位于有效负载中的字节0xc3处 我在谷歌上搜索了尽可能多的关于TCP负载中额外字节的信息,但没有找到类似的信息。我试图查看TCP规范,但也没有成功。我在哪里可以找到这方面的信息 TCP级别视图 RTMP级视图 发生这种情况

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

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

我在谷歌上搜索了尽可能多的关于TCP负载中额外字节的信息,但没有找到类似的信息。我试图查看TCP规范,但也没有成功。我在哪里可以找到这方面的信息

TCP级别视图

RTMP级视图


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


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

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


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

您能找到解决方案吗,我已经找到了problem@f_y我也有同样的问题,直到我解决了。检查我下面的答案。你能找到解决办法吗,我有problem@f_y我也有同样的问题,直到我解决了。检查下面我的答案。