使用 pcap 过滤 sdp 数据包

Filtering sdp packets using pcap

我想过滤 sdp 数据包,以便能够识别 rtp 流的可能会话启动。我正在使用 C++ 的 pcap 库来读取数据包,我想为 sdp 数据包编写一个解析器,但我不知道除了 SIP 和 MGCP(我的意思是在 UDP 之后)之外,哪些协议可以封装 sdp。或者如果有人能阐明 wireshark filters/identifys SDP 数据包是如何工作的。

如果我们将自己限制在 SDP 可以 直接 运行 的协议上,那么,如果我们查看 Wireshark 的当前主分支版本:

  • 原则上,任何使用媒体类型来描述其有效载荷的协议都可以携带媒体类型值为“application/sdp”的 SDP,尽管我不知道在实践中您是否例如,将永远看到 SDP-over-HTTP 而不是 SDP-over-SIP;
  • ITU-T RecommendationQ.1990中指定的BICC承载控制隧道协议,可以承载SDP,隧道协议指示符的值为0x20用于SDP;
  • Cisco会话管理协议可以承载SDP;
  • ISUP(ISDN用户部分)协议可以承载SDP;
  • 网关控制协议(RFC 3525; an earlier version was called MEGACO) and MGCP (RFC 3435)可以承载SDP;
  • 会话公告协议(RFC 2974)可以携带SDP。

您将在当今的网络流量中看到哪些是另一回事。

至于那些 运行 之上的协议,好吧,它们中的大多数 运行 在 TCP 或 UDP 之上,或者在最终 运行 s 在 TCP 或 UDP 之上,这意味着它们将 运行 在 IPv4 或 IPv6 之上,这意味着它们将 运行 在任何 link 层之上传输 IPv4 或 IPv6,表示以太网和 802.11 以及 PPP 和....

但是,ISUP 至少可以 运行 在老式电话网络堆栈之上,例如 Signaling System No. 7 堆栈;当 运行 在这些堆栈上时它是否传输 SDP 是另一回事。