我正在使用Tcpdump
来捕获网络接口上的数据包。在Wireshark
我可以看到RTP
和RTCP
交易在同一个端口上进行。我正在使用Libpcap
编写一个解剖器,它将解析并保存不同文件中的所有RTP
和RTCP
数据包。
如何区分哪个是RTP
数据包,哪个是RTCP
数据包?
答案 0 :(得分:2)
通常是RTP和RTCP are using a different port。但是,Duckduckgoing“同一端口上的RTP和RTCP”给了我Multiplexing RTP and RTCP on a Single Port,RFC5761。 Section 4讨论了如何区分这两种类型的数据包:
当RTP和RTCP数据包复用到单个端口时, RTCP数据包类型字段占据数据包中的相同位置 RTP标记(M)位和 RTP有效载荷类型的组合 (PT)。
[...]
允许此多路复用,将来的RTCP数据包类型分配 应该在209-223范围内的当前任务之后进行, 然后在194-199范围内,以便只有RTP有效载荷类型 在64-95范围内被阻止。
AFAIU,这意味着当两个协议在同一个字段中复用时,如果RTP数据包类型是64-95,那么该数据包不是RTP数据包而是RTCP数据包。