内容发布更新时间 : 2024/12/25 14:52:54星期一 下面是文章的全部内容请认真阅读。
RTP 控制协议 RTCP 在基于周期性传输的基础上,采用与数据包相同的分配机制,向会话参与者发送控制包。底层协议必须提供数据多路技术和控制包,例如使用 UDP 的特定端口号。RTCP 完成四个功能服务:
1. RTCP 提供数据分配质量反馈信息。作为传输协议这是 RTP 功能的主要部分并且它
涉及到了其它传输协议的流控制和拥塞控制。
2. RTCP 为 RTP 源(称为规范名或 CNAME)传送一个持久性传输层标识符。由于一旦
发现冲突或需要重启程序时,SSRC 标识符会随之改变,所以接收方要求 CNAME 明了每一个参与者,同时接收方还要求 CNAME 能够连接多重数据流和一组相关会话中的指定参与者,例如同步视频和音频。
3. 上述前两个功能要求所有的参与者都要发送 RTCP 包,因此必须控制速率以便 RTP
按比例增加大量的参与者。通过每一个参与者发送各自的控制包给其它所有参与者,每一个参与者能够独立观察到参与者数量,该数量可用来估算包的发送速率。 4. OPTIONAL 的功能是传送最小会话控制信息,例如在用户界面显示参与者标识。这对
于“松散受控”会话(在没有成员控制或阐述协商的情况下,参与者可以进出该会话)是非常有用的。 上述功能1-3适用于所有环境,尤其是 IP 组播环境。RTP 应用程序设计者应该避免设计只能工作于单播模式的机制并且不能大量增加其数量。由于在某些情况下如单向链接中,不可能有来自接收方的反馈,所以 RTCP 的传输就可能由发送方和接收方分别独立控制。
2 Version
3 P
8 RC Length
? ?
16 bit Packet type
? ? ?
Version ― 识别 RTCP 版本。RTP 数据包中的该值与 RTCP 数据包中的一样。当前规定值为2。
P ― 间隙(Padding)。设置时,RTCP 数据包包含一些其它 Padding 八位位组,它们不属于控制信息。Padding 的最后八位是用于计算应该忽略多少间隙八位位组。一些加密算法中需要计算固定块大小时也可能需要使用 Padding 字段。在一个复合 RTCP 数据包中,只有最后的个别数据包中才需要使用 Padding,这是因为复合数据包采用的是整体加密方法。
RC ― 接收方报告计数。接收方报告块的编号包含在该数据包中,有效值为0。 Packet Type ― 包括常量200,识别一个 RTCP SR 数据包。
Length ― RTCP 数据包的大小(32位字减去1),包含头和任意间隙(偏移量的引入使得0成为有效值,并避免了扫描复合 RTCP 数据包过程中的无限迂回现象,而采用32位字计数方法则避免了对4的倍数的有效校验)。