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

问题描述 投票:0回答:1

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

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

我尽了最大的努力来搜索有关TCP有效负载中额外字节的信息,但没有找到类似的东西。我尝试查看TCP规范,但也没有运气。在哪里可以找到有关此信息?

TCP级别视图

TCP-level view

RTMP级别视图

RTMP-level view

tcp rtmp
1个回答
0
投票

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

0xC3是下一个块的标头,查看0xC3的位,我们将得到11 000011。最高的2位指定格式(在这种情况下,fmt = 3,这意味着下一个块是规范中的类型3块)。其余6位指定块流ID(在这种情况下为3)。这样您看到的多余字节就是新块的标题。

© www.soinside.com 2019 - 2024. All rights reserved.