如果wireshark没有';不认识它们(RTSP、RTP、RTCP)?

如果wireshark没有';不认识它们(RTSP、RTP、RTCP)?,tcp,udp,wireshark,rtsp,rtp,Tcp,Udp,Wireshark,Rtsp,Rtp,我试图根据示例用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

我试图根据示例用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将该请求识别为特定协议?

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

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


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

谢谢!我试过了,现在我看到了所有的头,因为他们被编码。现在的问题是,为什么它不为我的数据包(以及对我的应用程序的VLC请求)和gstreamer VLC通信做开箱即用,我不知道。我从未见过Wireshark在我使用的设备上进行自动RTP识别。我在原始数据包中没有看到任何东西表明它是RTP。可能根据不同类型的有效载荷?(请参阅RFC3551)。经过一点搜索,当数据包中存在有效的SDP报头时,它将自动解码()“当数据包中存在有效的SDP报头时,它将自动解码”,或者更确切地说,当捕获设置RTP会话之前存在SDP数据包时。还有一个RTP首选项“尝试解码RTP外部对话”(以及相应的RTCP首选项),让Wireshark尝试试探性地确定数据包是否为RTP(RTCP)。谢谢@GuyHarris,我将更新我的答案以包含您的评论。所以我猜gstreamer/VLC正在发送SDP会话启动,而您没有?实际上,我正在发送,但我不确定它是否格式错误。至少它从未被破译为SDP开箱即用(以及其他RTSP请求)