RTP与SRTP区别在于payload是否加密,且会自带MKI和authentiocation tag(认证签名)。payload前面12Byte。
version:版本号 2 bit
RTP padding:填充字段,用以保证加密字段大小,和payload一起加密。该字段长度可能为0。前面p标志设置为1,表示需要填充。
RTP Extension:(16bit)拓展信息,如果X标志为1,表示头部包含拓展部分。
Contributing Source Identifiers count(CSRC):(16 bit)CSRC计数,用以表示音视频参与者数量,该字段为0,不需要使用。
Marker:(1 bit)指示当前数据包是否是视频帧或音频帧的结束,如果为1,表示当前RTP帧是最后一个分片
Payload Type:(8 bit)负载数据类型
Sequence number:(16 bit)表示RTP数据包的完整和顺序。每发送一个RTP数据包,就自增1
Synchronization Source identifier(SSRC):(32 bit)标识数据包来源,也就是标识一个源
SRTP Encrypted Payload:(Payload)会被加密处理,并添加一些认证信息以保证数据的完整性。加密后的负载被称为SRTP Encrypted Payload
SRTP Auth Tag: SRTP Auth Tag 主要用于检测 RTP 数据包是否被篡改或者重放攻击。如果接收方收到的 Auth Tag 和发送方发送的相应的 Auth Tag 不一致,则说明 RTP 数据包可能已经被篡改或者重放攻击了。计算 Auth Tag 的前提是需要对 RTP 数据包进行加密。因此,在解密 SRTP 数据包之前,必须先验证其认证标签以确保数据包的完整性和安全性。与X无关。
MKI:master key标识符,可选。与X无关
注意:SRTP对RTP数据包求签名是采用HMAC算法的。该算法会对整个 RTP 数据包进行计算,包括固定 RTP 头部和拓展头部(如果有)以及载荷数据。