我在我的网络接口上使用Tcpdump
to捕获数据包。在Wireshark
,我可以看到RTP
和RTCP
交易正在同一个港口进行。我正在使用Libpcap
编写一个解剖器,它将解析并保存所有RTP
和RTCP
数据包在不同的文件中。
我如何区分哪一个是RTP
数据包哪个是RTCP
数据包?
通常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范围内进行,以便仅阻止64-95范围内的RTP有效载荷类型。
AFAIU,这意味着当两个协议在同一字段中复用时,如果RTP数据包类型在64-95,则该数据包不是RTP数据包而是RTCP数据包。