RTP

实时传输协议(Real-time Transport Protocol 或 RTP)是一个网络协议,用于在网络上提供端对端的实时数据传输,如音频、视频或者模拟数据。此协议在自由软件和开源环境中应用广泛。与其他传输层协议相比,RTP 并不保证传输的可靠性,但提供了实时处理的支持,如QoS(质量服务),抖动补偿,跨载体交互等。

RTP头格式如下:

1
2
3
4
5
6
7
8
9
10
11
        0               1               2               3
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
|V=2|P|X| CC |M| PT | sequence number |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
| timestamp |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
| synchronization source (SSRC) identifier |
+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+
| contributing source (CSRC) identifiers |
: .... :
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+

  • V version:RTP协议的版本号,占2位,当前协议版本号为2。
  • P padding:填充标志,占1位,如果P=1,则在该报文的尾部填充一个或多个额外的八位组,它们不是有效载荷的一部分。
  • X extension:占1位,如果X=1,则在RTP报头后跟有一个扩展报头。
  • CC csrcLen:CSRC计数器,占4位,指示CSRC 标识符的个数。
  • M marker:标记,占1位,不同的有效载荷有不同的含义,对于视频,标记一帧的结束;对于音频,标记会话的开始。
  • PT payloadType:有效载荷类型,占7位,用于说明RTP报文中有效载荷的类型,如GSM音频、JPEM图像等。
  • sequence number:占16位,用于标识发送者所发送的RTP报文的序列号,每发送一个报文,序列号增1。接收者通过序列号来检测报文丢失情况,重新排序报文,恢复数据。
  • timestamp:占32位,时戳反映了该RTP报文的第一个八位组的采样时刻。接收者使用时戳来计算延迟和延迟抖动,并进行同步控制。
  • synchronization source (SSRC) identifier:占32位,用于标识同步信源。该标识符是随机选择的,参加同一视频会议的两个同步信源不能有相同的SSRC。
  • 标准的RTP Header 还可能存在 0-15个特约信源(CSRC)标识符,每个CSRC标识了包含在该RTP报文有效载荷中的所有特约信源

RTCP

实时传输控制协议(RTCP,Real-time Transport Control Protocol)是被设计来配合实时传输协议(RTP)共同使用,提供有关网络连接或流媒体数据的分组统计信息。

RTCP头格式如下:

1
2
3
4
5
6
7
8
        0               1               2               3
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
|V=2|P| RC | PT=SR=200 | length |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
| synchronization source (SSRC) identifier |
+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+
: .... :
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+

  • V version:RTP协议的版本号,占2位,当前协议版本号为2。
  • P padding:填充标志,占1位,如果P=1,则在该报文的尾部填充一个或多个额外的八位组,它们不是有效载荷的一部分。
  • RC:接收报告计数器,占5位,指示该SR包中的接收报告块的数目,即报告了几个接收端的信息。可以为0。
  • PT:包类型,8bits,SR包的类型为200。
  • Length:长度域,16bits,其中存放的是该SR包以32比特为单位的总长度减一