RTCP协议详解:rr包(第一个rr包)

RTCP协议详解:rr包(第一个rr包)
rfc标准文档:https://tools.ietf.org/html/rfc3550#section-6.4.2


这是一个抓包,和rtcp格式解析:sr包对应的rr包,所以肯定是音频的rr包,这里的音频是aac编码。


完整的rr包如下

81 c9 00 07    37 51 c9 35    37 51 c9 35    00 00 00 00
00 00 00 00    00 00 00 00    00 00 00 00    d0 a2 00 00
1
2
81
version : 版本是2
padding:没有填充
report count :有个1个report block

c9
payload 12*16+9 = 201,也就是rr包

00 07
payload长度,即整个rtcp包的大小
(7+1)*4=32字节

37 51 c9 35
ssrc,和sr包,以及rtp包是对应的

37 51 c9 35
report block的ssrc

00
fraction lost,丢包率为0。
loss fraction=lost rate * 256。定义的是两个rr发送间隔的丢包率,如果丢包率是25%,那么fraction lost = 25%*256 = 64
由于这是第一个rr包,还没有发生丢包,后续再分析有丢包的情况吧

00 00 00
累计丢包个数:说明还没有丢包
理论计算方式, packet lost = 期待得到报文数量 - 实际收到报文的数量
实际计算方式, packet lost = 期待收到最新sequence - 第一次收到报文的sequence。

00 00 00 00

计算方法,extended_seq_num = seq_num + (65536 * wrap_around_count)
其中wrap_around_count为sequence翻转的次数

00 00 00 00


00 00 00 00

这里有疑问?如果没有收到sr,才是0啊,但是前面已经有sr了啊???

d0 a2 00 00

接收端,在收到sr包,到发送rr包,所经历的时间。单位是1/65536秒。
这个字段打的可能有问题。

rtt
RTT: Round-Trip Time,发送者计算的发送来回时间。
发送者可以通过RR报文中的LSR和DLSR来计算RTT。
计算方法: 发送者用接收到RR报文的当前时间-RR报文的LSR,得到发送SR和接收到RR所花费的网络延时。
再进行: (接收到RR报文的当前时间-RR报文的LSR) - RR中的DLSR,也就是去除了在RTP接收者方本地的SR接收和RR发送的延时,这样就得到了RTT。
RTT = 接收到RR报文的当前时间-RR报文的LSR - RR中的DLSR

参考: https://blog.csdn.net/glw0223/article/details/89307095

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值