VoIP之RTP/RTCP协议

本文介绍了RTP协议的基本概念及其在网络传输中的应用。RTP主要用于端到端传输音频、视频等实时数据,它不保证服务质量但通过RTCP进行监控。文中详细解释了RTP的数据包结构、扩展头部以及RTCP的各种报文类型。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

在VoIP领域中,一般使用RTP作为媒体的传输协议。RTP(real-time transport protocol)由rfc3550定义(其中RFC1889已经过期)。

RTP提供了一种适用于应用在端到端之间传输音频、视频等实时数据的网络传输方式。RTP没有资源预留机制,不确保实时服务的服务质量。通过RTCP控制协议监控数据传输来最大化的利用网络。RTP/RTCP是独立于传输层和网络层设计的。

RTP应用场景:
一般使用IP和UDP承载,如下图

1. 简单的多播音频会议

2. 音频和视频会议

3. 混合器和翻译器(工作在RTP层面)

  •     混合器的一个应用场景是当低带宽网络参会方加入高带宽网络会议中,为不让会议中的每个人都使用低带宽网络、降低音频编码质量,在低带宽网络区域放入一个混合器。混合器重新构造数据包,将多路音频流混合成一路音频流,按低带宽编码后发送到低带宽网络。
  •   翻译器的一个应用场景是当音频会议中的参会方在应用层防火墙之后,不允许IP报文通过时,在防火墙的两侧各安装一个翻译器,通过两个翻译器完成参会方之间的数据交换。

术语定义:

  RTP payload: RTP携带的负载数据,如音频采样或压缩的视频数据
  RTP packet: 包含RTP头和负载的数据包
  RTCP packet: RTCP数据
  Synchronization source (SSRC): 同步源标识符

RTP固定头部:

    version (V): 2 bits,  版本号
    padding (P): 1 bit, 填充标志位,如果设置为1,则在有效负载后填充额外的8位组数据,最后的                           8 位组表示填充的长度。填充的一个应用场景是一些加密算法要求固定的数据块大                            小。
     extension (X): 1 bit: 扩展位,如果设置为1, 则固定的RTP头后面跟随一个扩展头
     CSRC count (CC): 4 bits: CSRC的数量,CSRC位于固定头之后
     marker (M): 1 bit: 标记(识)位,标识位的意义由应用的文档定义。比如标识一帧视频数据                                     的边界
     payload type (PT): 7 bits: 负载类型,由RFC3551定义, 如0:PCMU,8:PCMA
     sequence number: 16 bits: 序列号,最大值65535,每发送一个RTP数据包,序列号加1。序                                     列号的作用是接收方用来检测数据丢失和重新排序数据使用。为了防止对已                                     知明文的攻击,初始序列号应该是随机生成的。
     timestamp: 32 bits: 时间戳,RTP负载中第一个8位组的采样时间,同一时间产生的数据包有                                     相同的时间戳,比如属于同一视频帧的连续多个RTP包
     SSRC: 32 bits:  同步源标识,唯一标识RTP流
     CSRC list: 贡献源列表,支持表示0~15个贡献源,每一个用32位 表示,如果超过15 个,只                             列出15个。一般是被混合器加入的,用于接收方识别出讲话者

 

RTP扩展头部:

    defined by profile: 自定义
    length: 16bit, 表示有多少个32bit扩展数据的个数
    header extension: 扩展数据

    RTCP(RTP Control Protocol):RTCP周期性的向所有参与方发送控制包来反馈RTP数据                                                       收 发质量,如丢包率等。
    RTCP报文类型:
    SR:发送者报告,发送方 发送和接收情况的统计
    RR: 接收者报告, 接收方发送和接收情况的统计 
    SDES:媒体源描述,包括CNAME
    BYE: 表示参与方退出
    APP: 应用层自定义功能

抓包实例:

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

浪游东戴河

你就是这个世界的唯一

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值