如果 wireshark 无法识别某些类型的协议(RTSP,RTP、RTCP),如何强制它破译它们?



我正在尝试根据 http://www.csee.umbc.edu/~pmundur/courses/CMSC691C/lab5-kurose-ross.html 示例在 Java 中实现 RTSP 协议;我已经成功地通过 RTSP 请求和流式 RTP 数据包与 VLC 成功通信;具有 JPEG 有效负载的 RTP 数据包不能被 VLC 很好地识别;这就是为什么我认为我发送格式错误的 RTP。我用wireshark嗅了嗅它们,并将它们与数据包进行了比较,这些数据包是从gstreamer RTSP流处理器和VLc的成功RTSP通信中嗅到的。我很惊讶,我的app&VLC的RTSP和RTP请求在wireshark UI中都被标记为简单的TCP和UDP数据包,而gstreamer&VLC的请求被标记为RTSP,RTP,RTCP,甚至RTSP/SDP。

我真的很困惑,我不明白为什么在某些情况下 VLC 的要求被 wireshark 解析为纯 RTSP/RTP,而我的情况是纯 TCP/UDP 数据。至少,VLC 的请求没有格式错误,即使我的请求是。

如何强制 wireshark 将该请求识别为某个特定协议?

右键单击数据包并选择"解码为..."。然后在"传输"协议列表中选择"RTP"。

如果你想解码一些定制的协议,你必须获取或编译一个剖析器,这可能会很麻烦......幸运的是,PCAP格式很简单,直接插入它很容易(我碰巧上周刚刚做了一个,如果我的老板同意,我可能会把它开源)。

感谢@GuyHarris谁说,当检测到启动 RTP 会话的 SDP 数据包时,会执行自动 RTP 解码。"编辑>首选项"菜单中还有一个选项,在"协议"树下选择"RTP":"尝试在对话之外解码RTP"。

最新更新