如何将RTP包与其他包分开

How separate RTP packets from the rest

本文关键字:其他 RTP      更新时间:2023-10-16

我得到了一个带有voip会话的pcap文件,我如何将RTP数据包与其他数据包分开?

我可以获得sip数据包,但是我无法区分RTP数据包和其他数据包。

在您的文件中搜索RFC3550中定义的RTP头。或者更好地使用pcap-filter,例如这个wiki(查找"Q:什么是只捕获SIP和RTP数据包的好过滤器?")。

如果您想查看wireshark中的RTP流量,则:

  1. 选择Analyze->Display Filters…
  2. 选择"UDP",OK
  3. 右键单击任何UDP数据包并选择"Decode as…"
  4. 从列表中选择"RTP",OK
  5. 现在你可以看到所有的RTP包。

希望有帮助。:)

注。编辑说明,这是为Wireshark。感谢一位评论者指出这一点!

查看@mac关于PCap过滤器的建议。如果这不能满足您的需求(例如,您需要过滤掉特定SIP会话的RTP数据包),没有简单的方法。您需要解析SIP消息,检索RTP端口号,获取在特定时间段内进出这些端口的数据包,并(可选地)通过检查其报头(报头中的magic number)检查这些数据包是否为RTP

从pcap文件中提取RTP/RTCP数据包的开源软件是:

  • rtpbreak: http://dallachiesa.com/code/rtpbreak/doc/rtpbreak_en.html
  • xplico: http://www.xplico.org

从源代码中,您可以查看并理解所使用的方法。

我可以获得sip数据包,但我无法区分RTP数据包从其余的

如果您能够解码SIP,那么您可以找到(在INVITE消息中)SDP消息。如果你解码它,你可以找到RTP"流"的IP和端口(RTCP => PORT + 1)。有了这些信息,你可以唯一地识别RTP和RTCP数据包。请记住,通常有一些包(具有相同的IP-PORT)使用STUN协议,必须与RTP分开。您必须考虑数据包捕获在哪里(网络上下文和约束),您可以考虑NAT。

相关文章: