我正在开发一个数据包捕获程序来分析RTP / RTCP流量。 流量在移动网络中,例如VoLTE。据我所知,我需要首先搜索SIP / SDP数据包,以获取RTP / RTCP中使用的实际地址和端口号。问题是我应该研究哪些信息。例如:
有很多协议,很难掌握它们以获得所需的特定信息。感谢。
答案 0 :(得分:2)
SIP数据包中的源/目的地和其他信息。自SIP 使用代理,SIP分组的地址和SIP中的信息 标题如:" Via"," To"和"从"等等,与...无关 RTP地址,对吧? (P.S.,这些的真正目的是什么 字段?)
这些信息与您的RTP / RTCP信息无关,这些信息仅与SIP代理和与SIP会话相关的信息相关的双方有关。
SDP中o = line和c = line之间有什么区别?请问 RTP使用其中之一吗?
O line也是您不需要知道的,它关于始发者客户信息或标识符。 C = line保存会话的默认地址,如果您有多个媒体(如RTP和RTCP),则可以是会话级属性或媒体级属性。如果它在SDP中的会话级属性,那么它将出现在m = line之前。如果会话是非ICE会话,则该地址将用于您的媒体。
我必须找到调用者支持的常见编解码器和有效负载类型 和被叫方的SDP来确定RTCP端口。如果他们支持超过 一个媒体类型的编解码器,两端是否可以使用 不同的编解码器?
您将在m = line中找到与编解码器相关的信息,该信息将保存该媒体的媒体名称,传输类型和默认端口,如果是非ICE媒体,此端口将用于该相应媒体。 m =也将保存编解码器相关信息,这些是空格分隔值。除非您选择的编解码器与另一个最不可能的编解码器互操作,否则您不能使用不同的编解码器。
如果涉及STUN,TURN或ICE,我还应该研究什么?
你会发现这些信息为a = line,所有a = line出现在m = line之后,直到另一个m = SDP结尾的行是相应的媒体属性,让我们说对于候选人你会看到类似a =候选者的东西作为ICE候选者的行,你也可以看到a = ice-pwd,a = ice-ufrag等。假设你有音频m =带有RTP和RTCP组件的行,那么你也可以看到一个带有端口值的= rtcp行是RTCP默认端口,在这种情况下,端口出现在m = line是RTP默认端口。有关SDP的更多详细信息,您可以查看SDP RFC。您也可以查看ICE RFC了解与ICE相关的属性详情。