webrtc基础 - RTP/RTCP

1、简介

RTP—实时传输协议,其在多点传送(多播)或单点传送(单播)的网络上,提供端对端的网络传输功能,适合应用程序传输实时数据,如:音频,视频或者仿真数据。RTP没有为实时服务提供资源预留的功能,也不保证QoS(服务质量)。

RTP的数据传输功能由一个控制协议(RTCP)来扩展,通过扩展,可以用一种方式对数据传输进行监测控制,该协议(RTCP)可以升级到大型的多点传输(多播)网络,并提供最小限度的控制和鉴别功能。RTP 和 RTCP 被设计成和下面的传输层和网络层无关。

总结:
RTP 只是简单数据的封装,基于UDP。没有任何的QoS 的支持
RTCP 是对RTP 的扩展,也就是为解决了RTP 只是数据传输,没有管理的问题。

2、 协议格式

RFC3550_RTP协议中文版
rfc3550

2.1 RTP

RTP包主要由两部分组成,head和payload,head最小12个字节,可扩展。
webrtc基础 - RTP/RTCP_第1张图片

  • 版本( V ):2 比特 此域定义了 RTP 的版本。此协议定义的版本是 2。(值 1 被 RTP 草案版本使用,值 0 用在最初"vat"语音工具使用的协议中。)

  • 填充( P ):1 比特 若填料比特被设置,则此包包含一到多个附加在末端的填充比特,填充比 特不算作负载的一部分。 填充的最后一个字节指明可以忽略多少个填充比特。 填充可能用于某些 具有固定长度的加密算法,或者用于在底层数据单元中传输多个 RTP 包。

  • 扩展(X):1 比特 若设置扩展比特,固定头(仅)后面跟随一个头扩展。

  • CSRC 计数(CC):4 比特 CSRC 计数包含了跟在固定头后面 CSRC 识别符的数目。

  • 标志(M):1 比特 标志的解释由具体协议规定。它用来允许在比特流中标记重要的事件,如 帧边界。

  • 负载类型(PT):7 比特 此域定义了负载的格式,由具体应用决定其解释。协议可以规定负载 类型码和负载格式之间一个默认的匹配。 其他的负载类型码可以通过非 RTP 方法动态定义。 RTP 发送端在任意给定时间发出一个单独的 RTP 负载类型;此域不用来复用不同的媒体流。

  • 序列号(sequence number):16 比特 每发送一个 RTP 数据包,序列号加 1,接收端可 以据此检测丢包和重建包序列。 序列号的初始值是随机的(不可预测),以使即便在源本身不加密 时(有时包要通过翻译器,它会这样做),对加密算法泛知的普通文本攻击也会更加困难。

  • 时间戳(timestamp) 32 比特时间戳反映了 RTP 数据包中第一个字节的采样时间。时 钟频率依赖于负载数据格式,并在描述文件(profile)中进行描述。也可以通过 RTP 方法对负 载格式动态描述。时间戳可用来实现不同媒体流的同步

  • ×××C:32 比特 用以识别同步源。标识符被随机生成,以使在同一个 RTP 会话期中没有 任何两个同步源有相同的 ×××C 识别符。尽管多个源选择同一个 ×××C 识别符的概率很低,所 有 RTP 实现工具都必须准备检测和解决冲突。若一个源改变本身的源传输地址,必须选择新的 ×××C 识别符,以避免被当作一个环路源。

小结:
其实rtp 没有什么,只是在udp 发送数据的基础上,增加head 封装数据。来标识数据的类型和属性

  • 序列号 , 未来解决丢包和乱序问题
  • 负载类型,音视频类型
  • 时间戳,做音视频同步用的
  • 唯一标识, 由于是udp 端口可以接收多个源数据,要区分开哪一个发送源发送的数据

RTP包主要由两部分组成,head和payload,head最小12个字节,可扩展。

RTCP

由于rtp 太过于简单,只是在UDP 做了一些简单的封装,很多的功能无法支持,例如:重传等机制。那如何扩展呢,就是我们接下来要讲的rtcp 协议
webrtc基础 - RTP/RTCP_第2张图片

RTCP功能

在使用 RTP 包传输数据时,难免会发生丢包、乱序、抖动等问题,下面我们来看一下使用的网络一般都会在什么情况下出现问题:

  • 网络线路质量问题引起丢包率高;
  • 传输的数据超过了带宽的负载引起的丢包问题;
  • 信号干扰(信号弱)引起的丢包问题;
  • 跨运营商引入的丢包问题 ;

RTCP 的作用,收集当前网络质量状态

RTCP 报文的种类

根据所携带的控制信息不同,RTCP信息包可分为五类

  • RR(接收者报告包)
  • SR(源报告包)
  • SEDS(源描述包)
  • BYE(离开申明)
  • APP(特殊应用包)

为了对网络更加准确完善的描述,在出现了205、206 也是目前webrtc 在使用的的内容
webrtc基础 - RTP/RTCP_第3张图片
webrtc基础 - RTP/RTCP_第4张图片

RTCP 有两个最重要的报文:RR 和 SR 。通过这两个报文的交换,各端就知道自己的网络质量到底如何了。
webrtc基础 - RTP/RTCP_第5张图片

字段解释:
webrtc基础 - RTP/RTCP_第6张图片

你可能感兴趣的:(webrtc,RTP,RTCP,webrtc,音视频,网络)