面试题答案
一键面试RTCP常见报文类型及作用
- Sender Report(SR,类型1)
- 作用:发送方报告,用于发送端周期性地向接收端发送自身的发送和接收统计信息。这些信息包括发送的字节数、包数、时间戳等。接收端可以通过这些信息了解发送端的发送情况,评估网络状况,例如是否存在丢包、网络延迟等问题。
- 举例:在视频会议中,视频源端通过SR报文向其他参会端汇报已发送的视频帧数、字节数以及相应的时间戳,帮助接收端判断视频流的发送状态。
- Receiver Report(RR,类型2)
- 作用:接收方报告,接收端使用RR报文向发送端反馈接收统计信息,如接收的包数、丢包数、抖动情况等。发送端根据这些反馈信息,调整发送策略,例如调整发送速率,以适应网络状况。
- 举例:在在线直播场景中,观众端向直播服务器发送RR报文,告知服务器自己接收直播数据的丢包情况,服务器据此调整发送速率,保证直播的流畅性。
- Source Description(SDES,类型3)
- 作用:源描述报文,用于携带源的相关信息,如源的CNAME(规范名)。CNAME在整个会话期间保持不变,可用于唯一标识参与会话的源,即使源的传输地址发生变化。这有助于在复杂的网络环境中准确识别发送者或接收者。
- 举例:在多人在线游戏中,SDES报文携带每个玩家的CNAME,确保在游戏过程中,即使玩家的网络地址因网络切换等原因改变,其他玩家仍能准确识别。
- Bye(类型203)
- 作用:离开报文,当参与者要离开会话时,发送Bye报文通知其他参与者。该报文包含离开的源列表,让其他成员及时知晓有成员退出,以便进行相应的处理,如更新会话状态、重新调整资源分配等。
- 举例:在网络研讨会中,参会者结束参会时,发送Bye报文给会议服务器及其他参会者,服务器可以释放该参会者占用的资源,并通知其他参会者有人离开。
- APP(类型204)
- 作用:应用层自定义报文,允许应用程序自定义特定的控制信息。应用可以根据自身需求在APP报文中定义和携带信息,以实现特定的应用层功能。
- 举例:在一些特殊的实时监控应用中,可通过APP报文传递监控设备的特定状态信息,如设备电量、温度等,满足应用的特殊需求。
报文类型间的协作
- 发送端与接收端信息交互:发送端通过SR报文向接收端汇报自身发送情况,接收端则用RR报文反馈接收状况。这种双向的信息交互使得发送端能够根据接收端的反馈,动态调整发送策略。例如,当接收端在RR报文中反馈丢包率较高时,发送端可以降低发送速率,减少网络拥塞,从而确保实时传输的稳定性。
- 源标识与会话管理:SDES报文携带的CNAME用于唯一标识源,在整个会话过程中,无论是发送端还是接收端,都可以通过CNAME准确识别对方。当有成员要离开会话时,发送Bye报文通知其他成员,结合SDES报文中的源标识信息,其他成员能够清楚知道哪个源离开了,进而更新会话状态,维持会话的有序进行。
- 应用层定制支持:APP报文为应用层提供了自定义控制信息的途径,它可以与其他标准的RTCP报文协作。例如,结合SR和RR报文反馈的网络传输状况,APP报文可以携带应用层特定的调整指令,如特定分辨率的切换、编码格式的改变等,以进一步优化实时传输的效果,提高传输的高效性。