既然传输的RTCP包是经过加密的,那为什么抓包能够看到每一个字段的值是什么?

来源:9-2 RTCP协议头的分析

GavinXu89

2022-08-30

mediasoup发出去的RTCP包是经过加密的,代码如下:

void WebRtcTransport::SendRtcpCompoundPacket(RTC::RTCP::CompoundPacket* packet)
{
	...

	// 对RTCP数据进行加密。
	if (!this->srtpSendSession->EncryptRtcp(&data, &len))
}

mediasoup收到的RTCP包是经过加密的,所以才需要解密,代码如下:

inline void WebRtcTransport::OnRtcpDataReceived(...)
{
	...

	// Decrypt the SRTCP packet.
	// 解密rtcp packet。
	if (!this->srtpRecvSession->DecryptSrtcp(const_cast<uint8_t*>(data), &len))
}

然而Wireshark抓取的RTCP包可以看到每一个字段的值:
mediasoup发送的RTCP-SR包:
图片描述
mediasoup接收的RTCP-RR包:
图片描述
请问这是为什么?

写回答

1回答

李超

2022-08-31

RTCP header是不加密的,只对内容加密

0
3
李超
所以RTCP的内容,要和发送的内容做对比,你测试时,发送的数据记录下来,然后抓包,在根据包好看抓的的内容,之后比较内容是否一致
2022-10-23
共3条回复

百万级高并发WebRTC流媒体服务器设计与开发

备战5G音视频时代,抢先掌握服务端高级技能

2067 学习 · 375 问题

查看课程