0

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

  • SIP 数据包中的源/目标和其他信息。由于使用了 SIP 代理,所以 SIP 包的地址和 SIP 头中的信息如:“Via”、“To”和“From”等,与 RTP 地址无关,对吧?(PS,这些字段的真正目的是什么?)
  • SDP中的o= line和c= line有什么区别?RTP 会使用其中之一吗?
  • 我必须找到调用方和被调用方的 SDP 中支持的通用编解码器和有效负载类型来确定 RTCP 端口。如果它们支持一种媒体类型的多个编解码器,那么两端是否可以使用不同的编解码器?
  • 如果涉及 STUN、TURN 或 ICE,我还应该查看什么?

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

4

1 回答 1

3

SIP 数据包中的源/目标和其他信息。由于使用了 SIP 代理,所以 SIP 包的地址和 SIP 头中的信息如:“Via”、“To”和“From”等,与 RTP 地址无关,对吧?(PS,这些字段的真正目的是什么?)

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

SDP中的o= line和c= line有什么区别?RTP 会使用其中之一吗?

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

我必须找到调用方和被调用方的 SDP 中支持的通用编解码器和有效负载类型来确定 RTCP 端口。如果它们支持一种媒体类型的多个编解码器,那么两端是否可以使用不同的编解码器?

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

如果涉及 STUN、TURN 或 ICE,我还应该查看什么?

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

于 2015-12-12T16:52:37.077 回答