RTCP 协议介绍 RTCP 概要 实时传输控制协议(Real-time Control Protocol, RTCP)与 RTP 共同定义在1996 年提出的RFC 1889 中,是和 RTP 一起工作的控制协议。RTCP 单独运行在低层协议上,由低层协议提供数据与控制包的复用。在 RTP 会话期间,每个会话参与者周期性地向所有其他参与者发送RTCP 控制信息包,如下图所示。对于RTP 会话或者广播,通常使用单个多目标广播地址,属于这个会话的所有RTP 和 RTCP 信息包都使用这个多目标广播地址,通过使用不同的端口号可把RTP 信息包和RTCP 信息包区分开来。 图 每个参与者周期性地发送RTCP 控制信息包 RTCP 功能 1、为应用程序提供会话质量或者广播性能质量的信息 RTCP 的主要功能是为应用程序提供会话质量或者广播性能质量的信息。每个RTCP 信息包不封装声音数据或者电视数据,而是封装发送端和/或者接收端的统计报表。这些信息包括发送的信息包数目、丢失的信息包数目和信息包的抖动等情况,这些反馈信息反映了当前的网络状况,对发送端、接收端或者网络管理员都非常有用。RTCP 规格没有指定应用程序应该使用这些反馈信息做什么,这完全取决于应用程序开发人员。例如,发送端可以根据反馈信息来调整传输速率,接收端可以根据反馈信息判断问题是本地的、区域性的还是全球性的,网络管理员也可以使用RTCP 信息包中的信息来评估网络用于多目标广播的性能。 2、确定 RTP 用户源 RTCP 为每个RTP 用户提供了一个全局唯一的称为规范名称 (Canonical Name)的标志符 CNAME,接收者使用它来追踪一个 RTP 进程的参加者。当发现冲突或程序重新启动时,RTP 中的同步源标识符SSRC 可能发生改变,接收者可利用CNAME 来跟踪参加者。同时,接收者也需要利用CNAME 在相关RTP 连接中的几个数据流之间建立联系。当 RTP 需要进行音视频同步的时候,接受者就需要使用 CNAME 来使得同一发送者的音视频数据相关联。 3、控制 RTCP 传输间隔 由于每个对话成员定期发送RTCP 信息包,随着参加者不断增加,RTCP 信息包频繁发送将占用过多的网络资源,为了防止拥塞,必须限制RTCP 信息包的流量,控制信息所占带宽一般不超过可用带宽的 5%,因此就需要调整 RTCP 包的发送速率。由于任意两个RTP终端之间都互发 RTCP 包,因此终端的总数很容易估计出来,应用程序根据参加者总数就可以调整 RTCP 包的发送速率。 4、传输最小进程控制信息 这项功能对于参加者可以...