网络:实时运输协议RTP和实时运输控制协议RTCP

1、RTP

    RTP(Real-time Transport Protocol),实时运输协议,为实时应用提供端到端的运输,但是不提供任何服务质量的保证。

1.1 工作流程

    需要发送的多媒体数据块经过压缩编码后,先发送给RTP封装成RTP分组(也叫RTP报文),然后把RTP分组装入运输层UDP用户数据报中,再向下递交给IP层。RTP协议本身不对多媒体数据块做任何处理,只是向应用层提供一些附加的信息,让应用层知道应该如何处理。

    从应用开发者的角度,RTP应该是应用层的一部分,因为开发者需要编写RTP封装分组的程序代码,然后把RTP分组交付给UDP套接字接口。在接收端,RTP分组通过UDP套接字接口进入应用层后,还要利用开发者编写的程序从RTP分组中把应用数据块提取出来。

1.2 注意事项

    需要注意的是:

  1. RTP分组只包含RTP数据,而控制是通过另一个配套协议RTCP提供的;
  2. RTP在1025和65535之间选择一个未使用的偶数UDP端口号,而在同一次会话中的RTCP则使用下一个技术端口号。RTP的默认端口号是5004,RTCP默认端口号是5005.

1.3 首部信息

这里写图片描述

    在RTP首部中,前12个字节是必须的,12个字节以后的部分是可选的。

    重要字段介绍:

1、有效荷载类型

    占7位,指出后面的RTP数据属于那种格式的应用,收到RTP分组的应用层会根据字段的值进行处理。例如,对于音频有效载荷,包括:GSM(3)、LPC(7)等。

2、序号

    占16位。会话开始时的序号是随机选择的,而对每发出一个RTP分组,其序号加1。接收端通过序号检查是否有分组丢失,也用来将失序的RTP分组重新排序。

3、时间戳

    32位。反映了RTP分组第一个字节的采样时刻。第一次会话开始时,时间戳的初始值也是随机选择的,即使没有信号发送,时间戳也要随时间流逝而不断增加。

    接收端使用时间戳可以准确知道应当在什么时间还原哪一个数据块,从而消除时延抖动。时间戳还可以用来使视频应用中的声音和图像同步,RTP没有规定时间戳的粒度,这取决于有效荷载的类型,所以RTP的时间戳又被称为媒体时间戳。

    例如,对于8kHz采样的话音信号,如果每隔20ms构成一个数据块,那么一个数据块中包含160个样本(0.02 * 8000),因此发送端每发送一个RTP分组,时间戳的值就增加160。

4、同步源标识符SSRC

    32位。同步源标识符SSRC,用来标识RTP流的来源。SSRC与IP地址无关,是在新的RTP流开始时随机产生的。RTP流使用UDP传输,所以例如有多个摄像机同时拍摄的时候,接收端可能接收到同一个节目的多个RTP流。同步源标识符可以将收到的同一来源的RTP流放到一起出来。如果两个RTP流都选择了同一个SSRC,首先这种概率非常小,万一真的发生了,两个源都会重新选择SSRC。

5、参与源标识符CSRC

    32位。最多有15个。参与源标识符CSRC用来标识不同地点的RTP流。在多播环境中,可以用中间的一个站(混合站),把发往同一个地点的多个RTP流混合成一个流,以节省通信资源。在目的站再根据CSRC的值把不同的RTP流分开。

2、RTCP

2.1 简介

    RTCP(RTP Control Protocol),实时运输控制协议,是与RTP协议配合使用的协议。实际上,RTCP也是RTP不可分割的一部分。

    RTCP的主要功能:

  1. 服务质量的监视与反馈;
  2. 媒体间的同步(如某个RTP发送的声音和图像的配合);
  3. 多播组中成员的标志。

    RTCP分组(也叫RTCP报文),也是通过UDP来传送的,但是RTCP并不对音频/视频分组进行封装。而且RTCP分组很短,可以把多个RTCP分组封装在一个UDP用户数据报中。RTCP分组周期性地在网上传送,它带有发送端和接收端对服务质量的统计信息报告,例如已发送的分组数和字节数、分组字节丢失率、分组到达时间间隔的抖动等。

2.2 分组

    RTCP使用五种分组类型:

1、发送端报告SR

    发送端周期性向所有接收端用多播方式进行报告。发送端每发送一个RTP流,就要发送一个发送端报告分组SR。SR分组的主要内容:

  • 该RTP流的同步源标识SSRC;
  • 该RTP流中新产生的RTP分组的时间戳和绝对时钟时间;
  • 该RTP流包含的分组数;
  • 该RTP流包含的字节数。

2、接收端报告RR

    RR用来使接收端周期性地向所有的点用多播方式进行报告。接收端每收到一个RTP流,就会产生一个RR分组。RR分组的内容:

  • 所接受到的RTP流的SSRC;
  • 所接受到的RTP流的分组丢失率(如果丢失率过高,发送端就要降低发送速率);
  • 所接受到的RTP流的最后一个RTP分组的序号;
  • 所接受到的RTP流到达时间间隔的抖动。

3、源点描述SDES

    给出会话中参加者的描述,包含参加者的规范名。规范名是参加者的电子邮件地址的字符串。

4、结束分组BYE

    表示关闭一个数据流。

5、特定应用分组APP

    使应用程序能够定义新的分组类型。

  • 0
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值