我正在分析 RTMP(实时消息传递协议)并发现一些非常奇怪的东西。在其中一个捕获的数据包中,TCP 有效负载长度比预期的要长。这是 Wireshark 中的数据包:
该C3
字节使 RTMP 比预期的要长。在 RTMP 有效负载视图中令人惊讶的是:
如您所见,该C3
字节在 RTMP 视图中消失了。但它是 TCP 有效负载的一部分。我不知道为什么会这样,我怀疑:
一些更长的 UTF-8 字符?
根据维基百科,AMF0 中的字符串被编码为 16 位 UTF-8。这意味着它可以是 8/16 位。但是,
\u33C3
和\uC32E
都是韩文字符,在第二张图片中显示这不是我的情况。TCP有效负载的填充/转义字符?
不...我从来没有听说过...
关于 TCP 的一些我不知道的事情?
这是我发现的:
一个。它不是 RTMP 消息的片段,TCP 数据包包含 RTMP 消息所需的所有内容。
湾。校验和很好,一切似乎都很好。
C。数据包被对端正确确认(图中未显示)
d。这是可复制的,通过使用流媒体软件 Wirecast
我在这里错过了什么吗?为什么 Wireshark 可以正确解码有效载荷?为什么 Wireshark 简单地删除C3
(这表明它与 AMF0 编解码器无关)?我很困惑。请帮忙 :'(
RTMP 协议规范在这里:https ://wwwimages2.adobe.com/content/dam/acom/en/devnet/rtmp/pdf/rtmp_specification_1.0.pdf