📜  实时传输协议(RTP)

📅  最后修改于: 2021-08-27 07:41:11             🧑  作者: Mango

一种协议旨在处理Internet的实时流量(如音频和视频),称为实时传输协议(RTP) 。 RTP必须与UDP一起使用。它没有任何传送机制,例如多播或端口号。 RTP支持不同格式的文件,例如MPEG和MJPEG。它对数据包延迟非常敏感,而对数据包丢失较不敏感。

RTP的历史:
此协议由Internet工程任务组(IETF)开发,由四个成员组成:

  1. S.Casner(数据包设计)
  2. V.Jacobson(数据包设计)
  3. H. Schulzrinne(哥伦比亚大学)
  4. R.弗雷德里克(Blue Coat Systems Inc.)

RTP于1996年首次发布,被称为RFC 1889 。接下来,它于2003年以RFC 3550的名称发布。

RTP的应用:

  1. RTP主要有助于媒体混合,排序和时间戳记。
  2. 互联网协议语音(VoIP)
  3. 互联网上的视频电话会议。
  4. 互联网音频和视频流。

RTP标头格式:
RTP报文的报头格式图如下:

RTP的标头格式非常简单,它涵盖了所有实时应用程序。标头格式的每个字段的说明如下:

  • 版本 :
    这个2位字段定义版本号。当前版本是2。
    1. P –
      该字段的长度为1位。如果值为1,则表示在数据包末尾存在填充,而如果值为0,则不存在填充。
    2. X –
      该字段的长度也是1位。如果此字段的值设置为1,则表示数据和基本头之间有一个额外的扩展头,如果值为0,则没有额外的扩展。
    3. 贡献者数量–
      该4位字段指示贡献者的数量。此处贡献者的最大数量为15,因为4位字段可以允许数字形式为0到15。
    4. M –
      该字段的长度为1位,应用程序将其用作结束标记以指示其数据结束。
    5. 有效负载类型–
      该字段的长度为7位,以指示有效载荷的类型。我们列出了一些常见类型的有效负载的应用程序。

    Payload Type Encoding name
    0 PCM micro Audio
    1 1016
    2 G721 audio
    3 GSM audio
    5-6 DV14 audio
    7 LPC Audio
    8 PCMA Audio
    9 G722 Audio
    10-11 L16 Audio
    14 MPEG Audio
    15 G728 Audio
    26 Motion JPEG
    31 H.216
    32 MPEG1 video
    33 MPEG2 video

    有效负载类型是以RTP标头格式以7位表示的唯一数字。每种有效载荷类型都表示音频/视频媒体的特定编码。允许RTP源在给定的时间发送单个有效载荷类型。该字段主要指定媒体流中使用的编解码器的类型。
    例如,如果我们使用“ 1”作为有效载荷类型,其编码名称为1016,则意味着它将对媒体流使用FS-1016语音编码。

    如果我们使用编码名称为H.261的’31’有效载荷类型,则意味着它将使用ITU-T视频压缩标准。类似地,有效载荷类型的每个数目都指示用于音频/视频流的特定编码类型。

    • 序列号 –
      该字段的长度为16位。用于为RTP数据包提供序列号。它有助于排序。第一个数据包的序列号将被赋予一个随机数,然后每个下一个数据包的序列号将增加1。此字段主要有助于检查丢失的数据包和顺序不匹配。
    • 时间戳–
      该字段的长度为32位。用于查找不同RTP数据包的时间之间的关系。第一个数据包的时间戳是随机给出的,然后是下一个数据包的时间戳,该时间戳是前一个时间戳与产生当前数据包的第一个字节所花费的时间之和。 1个时钟滴答的值因应用程序而异。
    • 同步源标识符–
      这是一个32位字段,用于标识和定义源。该源标识符的值是由源本身选择的随机数。这主要有助于解决当两个源以相同的序号开始时出现的冲突。
    • 贡献者标识符–
      这也是一个32位字段,用于在会话中存在多个源的情况下进行源标识。混合器源使用“同步”源标识符,其他剩余源(最多15个)使用“贡献者”标识符。

    通过RTP协议进行的数据传输如下所示: