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

How can I force wireshark to decipher some types of protocols if it doesn't recognize them (RTSP,RTP, RTCP)?

提问人:Eljah 提问时间:9/22/2013 更新时间:9/24/2013 访问量:12988

问:

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

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

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

TCP UDP Wireshark RTSP RTP

评论

0赞 Matthieu 9/24/2013
所以我猜 gstreamer/VLC 正在发送 SDP 会话启动,而你没有?
0赞 Eljah 9/25/2013
实际上,我正在发送,但我不确定它是否格式错误。至少它从未被破译为开箱即用的 SDP(以及其他 RTSP 请求)

答:

7赞 Matthieu 9/22/2013 #1

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

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

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

评论

0赞 Eljah 9/22/2013
谢谢!我试过了,现在我看到了所有标头的编码。现在的问题是,为什么它不能为我的数据包(以及对我的应用程序的 VLC 请求)开箱即用,而对 gstreamer-VLC 通信这样做......
0赞 Matthieu 9/22/2013
我不知道。我从未见过 Wireshark 在我使用的设备上进行自动 RTP 识别。而且我在原始数据包中没有看到任何表明它是 RTP 的内容。也许根据不同类型的有效载荷?(见RFC3551 tools.ietf.org/html/rfc3551)。
1赞 Matthieu 9/22/2013
经过一番搜索,事实证明,当数据包中有有效的 SDP 标头时,它会自动解码 (wiki.wireshark.org/SDP)
3赞 9/22/2013
“当数据包中有有效的 SDP 标头时自动解码” 或者,更确切地说,当捕获中较早有 SDP 数据包时,设置 RTP 会话。还有一个 RTP 首选项“尝试解码外部会话的 RTP”(以及相应的 RTCP 首选项),使 Wireshark 尝试启发式地确定数据包是否为 RTP (RTCP)。
0赞 Matthieu 9/24/2013
谢谢@GuyHarris,我将更新我的答案以包含您的评论。