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数据报返回的控制信息,来了解其他参与者的当前情况。

一个典型的流媒体应用场景:

  1. 发送媒体流的应用程序将周期性地产生发送端报告SR,该RTCP数据报含有不同媒体流间的同步信息,以及已经发送的数据报和字节的计数,
  2. 接收端收到SR后根据这些信息可以估计出实际的数据传输速率。
  3. 接收端会向所有已知的发送端发送接收端报告RR,该RTCP数据报含有已接收数据报的最大序列号、丢失的数据报数目、延时抖动和时间戳等重要信息
  4. 发送端收到RR后根据这些信息可以估计出往返时延,并且可以根据数据报丢失概率和时延抖动情况动态调整发送速率,以改善网络拥塞状况。