背景:
浏览器使用webrtc推流,转包发现rtcp的sr包 ntp timestamp显示错误,排查原因。
使用wirshark看抓取的数据包,发现rtcp的 发送者报告也就是sr中的ntp时间以及timestamp都不正确,无法和数据包对上,但是ssrc是正确的,这是为什么呢?
Wirshark抓包如下图:
Webrtc规定,传输使用srtcp
在程序中加日志,在生成rtcp的sr的代码以及加密srtcp后的数据 打印字节流,作为对比
Rtcp sr原始数据和加密数据对比
将srtcp数据包和wirshark数据包对比,可以看出,
0X76 0X85 0X3E 0XC0 表示ssrc,也就是说 srtcp对于sr包的处理是 对ssrc之后的数据加密。wirshark无法解密,根据字节流顺序解析显示,导致ntp timestamp看起来都是错误的。
结论:不是rtcp 的sr包错误,是由于srtcp传输,将ntp/timestamp加密,导致wrishark无法解析正确。
srtp的加密规则是将payload数据进行机密
待验证:
- Srtcp对于其他类型的包加密规则
- srtp对于扩展协议的加密规则