当前位置:网站首页>RTP协议浅析

RTP协议浅析

2022-08-11 11:32:00 blackstar

基础概念

  • 全称: 实时传输协议,是一个网络协议;由IETF多媒体传输工作小组在 1996年中公布
  • 作用: 详细说明了在互联网上传输音频和视频的标准数据包格式
  • 协议栈: 位于传输层上,属于传输层的子层。主要使用传输层的 多播单播

使用场景

  • 简单多播音频会议
  • 音视频会议
  • 混合器和转发器

数据包格式

RTP头格式

  • 大小:固定最小12个字节
  • 报文格式
    0                   1                   2                   3
    0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1
   +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
   |V=2|P|X|  CC   |M|     PT      |       sequence number         |
   +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
   |                           timestamp                           |
   +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
   |           synchronization source (SSRC) identifier            |
   +=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+
   |            contributing source (CSRC) identifiers             |
   |                             ....                              |
   +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
   
  • 报文字段说明

    • version(V):2bits, RTP版本号;当前版本号位2
    • padding(P):1bit,填充位;如果该为被设置,则RTP报文包尾包含一个或多个额外的非有效载荷的字节
    • extension(X):1bit,扩展位;如果该位被设置,则固定头后必须紧跟一个扩展头,格式如下:
      0                   1                   2                   3
      0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1
     +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
     |      defined by profile       |           length              |
     +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
     |                        header extension                       |
     |                             ....                              |
    • CSRC count(CC):4bits,CSRC计数器;记录了CSRC (贡献源标识符列表,与混合器有关) 标识符列表的长度
    • marker(M):1bit,标记位;由配置文件解释,它的目的是允许在包流中标记诸如帧边界之类的重要事件
    • payload type(PT):7bits,有效载荷类型;规范了RTP有效载荷数据 (音频或视频) 的格式,详情可参考 RFC 3551
    • sequence number:16bits,包序列号,递增;接收器可以根据序列号进行数据包丢失检测和包顺序的恢复
    • timestamp:32bits,包采集时间点;单独线性递增
    • synchronization source identifier(SSRC):32bits,同步源标识符;包来源标识符,随机生成;同一会话中的任意两个同步源标识符不可相同,必须做好冲突检测和解决冲突
    • contributing source identifiers(CSRC):每项32bits,共0~15项,贡献源标识符列表;如果超过15个贡献源,只使用15个;混合器使用贡献源的SSRC标识符插入到CSC表示中

RTP有效载荷

| 规范了音频或视频数据的标准格式

  • 音频编码的有效载荷类型列表
               PT   encoding    media type  clock rate   channels
                    name                    (Hz)
               ___________________________________________________
               0    PCMU        A            8,000       1
               1    reserved    A
               2    reserved    A
               3    GSM         A            8,000       1
               4    G723        A            8,000       1
               5    DVI4        A            8,000       1
               6    DVI4        A           16,000       1
               7    LPC         A            8,000       1
               8    PCMA        A            8,000       1
               9    G722        A            8,000       1
               10   L16         A           44,100       2
               11   L16         A           44,100       1
               12   QCELP       A            8,000       1
               13   CN          A            8,000       1
               14   MPA         A           90,000       (see text)
               15   G728        A            8,000       1
               16   DVI4        A           11,025       1
               17   DVI4        A           22,050       1
               18   G729        A            8,000       1
               19   reserved    A
               20   unassigned  A
               21   unassigned  A
               22   unassigned  A
               23   unassigned  A
               dyn  G726-40     A            8,000       1
               dyn  G726-32     A            8,000       1
               dyn  G726-24     A            8,000       1
               dyn  G726-16     A            8,000       1
               dyn  G729D       A            8,000       1
               dyn  G729E       A            8,000       1
               dyn  GSM-EFR     A            8,000       1
               dyn  L8          A            var.        var.
               dyn  RED         A                        (see text)
               dyn  VDVI        A            var.        1
  • 视频编码的有效载荷类型列表
               PT      encoding    media type  clock rate
                       name                    (Hz)
               _____________________________________________
               24      unassigned  V
               25      CelB        V           90,000
               26      JPEG        V           90,000
               27      unassigned  V
               28      nv          V           90,000
               29      unassigned  V
               30      unassigned  V
               31      H261        V           90,000
               32      MPV         V           90,000
               33      MP2T        AV          90,000
               34      H263        V           90,000
               35-71   unassigned  ?
               72-76   reserved    N/A         N/A
               77-95   unassigned  ?
               96-127  dynamic     ?
               dyn     H263-1998   V           90,000
  • 关于 G.711.1 音频编码载荷类型的举例说明

    • 有效载荷头
     0 1 2 3 4 5 6 7
     +-+-+-+-+-+-+-+-+
     |0 0 0 0 0|  MI |
     +-+-+-+-+-+-+-+-+

    | mode index(MI):模式索引,标识音频帧的模式;只能使用标准中指定的值,其他值作为保留值,备将来使用

    • 音频数据

    | 紧跟在有效载荷头后,连续的音频帧按时间顺序打包。所有帧必须具有相同的模式,由有效载荷头的 MI 指示

    | 一帧的数据大小由模式给出:nb_frames = (size_of_audio_data) / (size_of_frame)

    • R1模式
    +-------------------------------+
    |              L0               |
    +-------------------------------+
    • R2a模式
    +-------------------------------+--------+
    |              L0               |   L1   |
    +-------------------------------+--------+
    • R2b模式
    +-------------------------------+--------+
    |              L0               |   L2   |
    +-------------------------------+--------+
    • R3模式
    +-------------------------------+--------+--------+
    |              L0               |   L1   |   L2   |
    +-------------------------------+--------+--------+
    • 音频参数映射到SDP参数

    | SDP协议相关知识,本文章不做详细赘述,只做用例说明

    m=audio 54874 RTP/AVP 96 8
    a=rtpmap:96 PCMA-WB/16000
    a=rtpmap:8 PCMA/8000

RTP报文结构

  • 完整的报文格式
0                   1                   2                   3
0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+<+
|V=2|P|X|  CC   |M|     PT      |       sequence number         | |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ |
|                           timestamp                           | |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ |
|           synchronization source (SSRC) identifier            | |
+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+ |
|            contributing source (CSRC) identifiers             | |
|                               ....                            | |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ |
|                   RTP extension (OPTIONAL)                    | |
+>+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ |
| |                          payload  ...                         | |
| |                               +-------------------------------+ |
| |                               | RTP padding   | RTP pad count | |
+>+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+<+
  • 抽象的报文结构
+-+-+-+-+-+-+-+-+-+-+
| header  | payload |
+-+-+-+-+-+-+-+-+-+-+

协议栈

安全性

| SRTP: 安全实时传输协议,数据包格式如下:

      0                   1                   2                   3
      0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1
     +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+<+
     |V=2|P|X|  CC   |M|     PT      |       sequence number         | |
     +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ |
     |                           timestamp                           | |
     +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ |
     |           synchronization source (SSRC) identifier            | |
     +=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+ |
     |            contributing source (CSRC) identifiers             | |
     |                               ....                            | |
     +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ |
     |                   RTP extension (OPTIONAL)                    | |
   +>+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ |
   | |                          payload  ...                         | |
   | |                               +-------------------------------+ |
   | |                               | RTP padding   | RTP pad count | |
   +>+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+<+
   | ~                     SRTP MKI (OPTIONAL)                       ~ |
   | +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ |
   | :                 authentication tag (RECOMMENDED)              : |
   | +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ |
   |                                                                   |
   +- Encrypted Portion*                      Authenticated Portion ---+

| 安全性相关协议,超出本文章范围,不做详细说明;后续根据需要,单独进行说明。

参考文献

原网站

版权声明
本文为[blackstar]所创,转载请带上原文链接,感谢
https://mdnice.com/writing/4d31eff2c3824762bb67e82d29ead0f4