在 SIP/SDP 之后查找 RTP/RTCP

Find RTP/RTCP after SIP/SDP

我正在开发一个数据包捕获程序来分析 RTP/RTCP 流量。 流量在移动网络中,例如 VoLTE。我知道我需要先在 SIP/SDP 数据包中搜索以获取 RTP/RTCP 中使用的实际地址和端口号。问题是我应该查看哪些信息。例如:

协议太多,很难掌握所有协议以获得所需的特定信息。谢谢

Source/Destination and other information in the SIP packets. Since SIP proxy is used, the address of the SIP packet and information in SIP header like: "Via", "To" and "From", etc., have nothing to do with the RTP addresses, right? (P.S., what is the really purpose of these fields?)

对了,这些信息与你的RTP/RTCP信息无关,这些只是关于SIP代理的信息和与SIP会话相关的信息。

What is the difference between o= line and c= line in SDP? Will the RTP uses one of them?

O线也是你不需要知道的,它是关于发起者客户信息或标识符的。 C= 行包含会话的默认地址,如果您有多种媒体(如 RTP 和 RTCP),这可以是会话级别属性或媒体级别属性。如果它在 SDP 中的会话级属性那么它将出现在 m= 行之前。如果会话是非 ICE 会话,则此地址将用于您的媒体。

I have to find the common codecs and payload types supported in caller and callee's SDP to determine RTCP ports. If they support more than one codec for a media type, is it possible for the two ends to use different codec?

您将在 m= 行中找到与编解码器相关的信息,其中包含该媒体的媒体名称、传输类型和默认端口,如果是非 ICE 媒体,则该端口将用于相应的媒体。 m= 也将保存编解码器相关信息,这些是 space 分隔值。您不能使用不同的编解码器,除非您选择的编解码器可以与另一个最不可能的编解码器互操作。

If there are STUN, TURN or ICE involved, what else should I look into?

你会发现这些信息为 a= 行,所有 a= 行都出现在 m= 行之后,直到 SDP 末尾的另一 m= 行是相应的媒体属性,假设对于候选人你会看到类似 a =candidate 行作为 ICE 候选人,您可能还会看到 a=ice-pwd、a=ice-ufrag 等。假设您有音频 m= 带有 RTP 和 RTCP 组件的行,那么您可能还会看到带有端口的 a=rtcp 行值是 RTCP 默认端口,在这种情况下,出现在 m= 行中的端口是 RTP 默认端口。有关 SDP 的更多详细信息,您可以查看 SDP RFC. Also you can check ICE RFC 以获取与 ICE 相关的属性详细信息。