RTCP协议学习
RTCP,Real-time Transport Control Protocol(实时传输控制协议),是RTP协议的姊妹协议。
RTCP负责管理传输质量,在当前应用进程之间交换控制信息,提供流量控制和拥塞控制服务。
在RTP会话期间,各参与者周期性地传送RTCP包,包中含有已发送的数据包的数量、丢失的数据包的数量等,服务器可以利用这些信息动态地改变传输速率等。
RTP和RTCP配合使用,能以有效的反馈和最小的开销使传输效率最佳化,故特别适合传送网上的实时数据。
RTCP原理
RTCP原理是向会话中的所有成员周期性地发送控制包来实现的。应用程序通过接收这些控制数据包,从中获取会话参与者的相关资料,以及网络状况、分组丢失概率等反馈信息,从而能够对服务质量进行控制或者对网络状况进行诊断。
RTCP报文
RTCP协议的功能是通过不同的RTCP数据报文来实现的,主要有如下几种类型:
PT类型 | 缩写 | 全称 | 用途 |
---|---|---|---|
200 | SR | Sender Report | 发送端报告,发布数据发送端的传输信息 发送端是指发出RTP数据报的应用程序或者终端 发送端同时也可以是接收端。 |
201 | RR | Receiver Report | 接收端报告,发布数据接收端的数据接收质量统计信息 接收端是指仅接收但不发送RTP数据报的应用程序或者终端。 |
202 | SDES | Source Description Items | 源描述,主要作为会话参与者的有关标识信息的载体,此外还具有向会话成员传达会话控制信息的功能。 |
203 | BYE | Goodbye | 通知离开,用来通知会话中其他参与者自己要离开会话 |
204 | APP | Application-defined | 用来传输应用程序自定义的数据信息 |
RTCP数据报采用的是组播方式,因此会话中的所有成员都可以通过RTCP数据报返回的控制信息,来了解其他参与者的当前情况。
一个典型的流媒体应用场景:
- 发送媒体流的应用程序将周期性地产生发送端报告SR,该RTCP数据报含有不同媒体流间的同步信息,以及已经发送的数据报和字节的计数,
- 接收端收到SR后根据这些信息可以估计出实际的数据传输速率。
- 接收端会向所有已知的发送端发送接收端报告RR,该RTCP数据报含有已接收数据报的最大序列号、丢失的数据报数目、延时抖动和时间戳等重要信息
- 发送端收到RR后根据这些信息可以估计出往返时延,并且可以根据数据报丢失概率和时延抖动情况动态调整发送速率,以改善网络拥塞状况。