【音视频第21天】RTP、RTCP结合wireshark抓包详解

这篇具有很好参考价值的文章主要介绍了【音视频第21天】RTP、RTCP结合wireshark抓包详解。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

感觉单纯看理论没啥意思,结合RTCP、RTP来看一看抓包详解

RTP

实时传输协议RTP(Realtime Transport Protocol):是针对Internet上多媒体数据流的一个传输协议, 由IETF作为RFC1889发布,现在最新的为RFC3550。RTP被定义为在一对一或一对多的传输情况下工作,其目的是提供时间信息和实现流同步。RTP的典型应用建立在UDP上,但也可以在TCP等其他协议之上工作。RTP本身只保证实时数据的传输,并不能为按顺序传送数据包提供可靠的传送机制,也不提供流量控制或拥塞控制,它依靠RTCP提供这些服务。

RTP报文头格式

之前曾经写过一个RTP报文:https://blog.csdn.net/Magic_o/article/details/130059383?spm=1001.2014.3001.5501
RTP报文头格式(见RFC3550 Page12):
wireshark抓rtp包,音视频,音视频,wireshark,网络
PT(Payload Type 负载类型)的值定义如下
wireshark抓rtp包,音视频,音视频,wireshark,网络
除了上表中明确指定PT值的负载类型,还有些负载类型由于诞生的较晚,没有具体的PT值,
只能使用动态(dynamic)PT值,即96到127,这就是为什么大家普遍指定H264的PT值为96。
重新抄一遍:
Version (V)
Version 总是 2。

Padding §
Padding 是控制有效载荷是否具有填充值的布尔值。
有效负载的最后一个字节包含添加了多少填充字节的计数。

Extension (X)
如果设置的话,RTP 报头将有扩展段(可选)。这点将在下面更详细地描述。

CSRC count (CC)
在 SSRC 之后,有效负载之前的 CSRC 标识符的数量。

Marker (M)
标记位没有预设含义,用户可以根据自己的需求随意使用它。
在某些情况下,它是在用户讲话时设置的。它还通常用于标记关键帧
对于将H.264帧封装成RTP包时,属于同一帧的RTP有相同的时间戳,且它们sequence number是连续且单调递增的。
此帧的最后一个RTP包会有一个Mark标记

Payload Type (PT)
Payload Type(负载类型)是此数据包所承载的编解码器的一个唯一标识符。

对于 WebRTC,Payload Type 是动态的。一个呼叫中的 VP8 的 PT 可能与另一个呼叫中的不同。呼叫中的 offerer 确定 Payload Type 到 Session Description(会话描述符)中的编解码器的映射。

Sequence Number
Sequence Number(序列号)用于对流中的数据包进行排序。每次发送数据包时,Sequence Number 都会增加 1。

RTP 被设计为可以在有损网络上使用。这为接收器提供了一种检测数据包何时丢失的方法。

Timestamp
此数据包的采样时刻。这不是全局时钟,而是在当前媒体流中所经过的时间。举例来说,如果多个 RTP 包都属于同一视频帧,那么它们可能具有相同的时间戳。

Synchronization Source (SSRC)
SSRC 是此流的唯一标识符。这使你可以在单个 RTP 流上传输多个媒体流。

Contributing Source (CSRC)
一个列表,用于表示哪些 SSRC 参与到了这个数据包中。
这通常用于语音指示器。假设在服务器端,你将多个音频源组合到一个单独的 RTP 流中。然后,你可以在此字段中表示 " 输入流 A 和 C 此时正在讲话 “。

Payload
实际有效负载数据。如果设置了填充(padding)标记,则可能以添加的填充字节数结尾。

CSRC count (CC)
CSRC是SSRC之后和有效载荷之前的标识符。

详细可以见到https://webrtcforthecurious.com/zh/docs/06-media-communication/#packet-format%E5%8C%85%E6%A0%BC%E5%BC%8F

RTP报文抓包分析

wireshark抓rtp包,音视频,音视频,wireshark,网络
wireshark抓rtp包,音视频,音视频,wireshark,网络
根据您提供的帧信息,这是一个 RTP(实时传输协议) 包,它在以太网 II 上传输,长度为 1147 字节 (9176 位)。该帧的源地址为 Cisco_ba:5a:44(00🇩🇪fb:ba:5a:44),目标地址为 fa:16:3e:d0:ca:a7(fa:16:3e:d0:ca:a7)。该帧使用 IP(互联网协议) 版本 4,源地址为 112.17.79.157,目标地址为 172.21.145.154。该帧使用 UDP(用户数据报协议),源端口为 59037,目标端口为 20309。
wireshark抓rtp包,音视频,音视频,wireshark,网络
这是一个 RTP(实时传输协议) 包,它被 DTLS-SRTP(数据加密协议 - 安全 rtp) 协议初始化。该包的序列号为 9632,扩展序列号为 75168,时间戳为 4038466672。该包包含一个未知的同步源标识符,其定义未知。

该包包含三个 RFC 5285(现代 RTP 协议) 头扩展。

在 RTP 包中,数据部分是一个动态 RTP 类型 (DynamicRTP-Type-96),其序列号为 96。该序列号是动态分配的,用于标识当前数据传输。

该包的 SRTP(安全 rtp) 加密载荷为 f963a0958f28c30d4c526fbdc99c8c1111da25659fcfc57287b164aad3bc41870c239d,其验证标签为 2d49a54079949ef7ffb1。
根据 DTLS-SRTP 协议,初始化协议通过一个 RTP 包进行传输,该包包含一个未知的同步源标识符。在未来的数据传输中,可以使用这个标识符来标识同步源。此外,DTLS-SRTP 还支持加密和认证,以确保数据的机密性和完整性。

RTCP

实时传输控制协议RTCP(Realtime Transport Control Protocol):负责管理传输质量,在当前应用进程之间交换控制信息,提供流量控制和拥塞控制服务。在RTP会话期间,各参与者周期性地传送RTCP包,包中含有已发送的数据包的数量、丢失的数据包的数量等统计资料,因此,服务器可以利用这些信息动态地改变传输速率,甚至改变有效载荷类型。RTP和RTCP配合使用,能以有效的反馈和最小的开销使传输效率最佳化,故特别适合传送网上的实时数据。
RTCP包括五种数据包类型(RFC3550 Page69):
wireshark抓rtp包,音视频,音视频,wireshark,网络

RTCP报文头格式

每个RTCP包的开始部分是与RTP数据包相类似的固定部分,随后是一块结构化单元,它随负载类型不同长度发生变化,但是总以32比特终止.
发射机报告包由3部分组成,若定义,可能跟随第4个面向协议的扩展部分.
以SR报文为例,RTCP报文格式(RFC3550 Page35)如下:
wireshark抓rtp包,音视频,音视频,wireshark,网络

Version (V)
Version 总是 2。

Padding §
Padding 是控制有效载荷是否具有填充值的布尔值。

有效负载的最后一个字节包含添加了多少填充字节的计数。

Reception Report Count (RC)
此数据包中的报告数。单个 RTCP 数据包可以包含多个事件。

Packet Type (PT)
指示 RTCP 数据包类型的唯一标识符。WebRTC Agent 不需要支持所有这些类型,并且 Agent 之间的支持能力可以是不同的。下面这些是你可能经常看到的类型:

192 - 完整的帧内请求(FIR)
193 - 否定确认(NACK)
200 - 发送方报告(SR)
201 - 接收方报告(RR)
202 - source Description (SDEC)
203 -  Goodbye(BYE)
204 - Application-defined(APP)
205 - 通用 RTP 反馈
206 - 有效负载特定反馈

RTCP报文抓包分析

以NACK为例

NACK

wireshark抓rtp包,音视频,音视频,wireshark,网络

wireshark抓rtp包,音视频,音视频,wireshark,网络
RTCP 帧序列号 416 是一个用于在实时通信中传输控制信息的 RTCP(Real-Time Control Protocol) 帧。
RTCP 帧长度为 72 字节 (576 位),包括帧头和数据部分的长度。RTCP 帧头包含发送者和接收者的源和目标地址,以及传输协议。
通用 RTP 反馈消息是用于报告数据传输错误的 RTP 反馈消息类型。在这种情况下,NACK 消息表明在传输过程中丢失了 8 个帧
RTCP 帧的源端口号为 20309,这是发送者的应用程序端口号。目标端口号为 59037,这是接收者的应用程序端口号。
总的来说,捕获结果表明接收者接收到了一个带有通用 RTP 反馈消息的 RTCP 帧,这表明在传输过程中丢失了 8 个帧。

PID(消息类型标识符) 用于标识传输反馈消息的类型。RTCP Transport Feedback NACK PID:19163 表示一个 NACK(否定确认) 消息被发送,以通知接收方有一定数量的帧丢失。NACK 消息通常由发送方发送,以请求接收方重新传输丢失的帧。
PID:19163 是一个用于传输反馈消息的 PID,它标识了这种消息的类型。在 RTCP 传输中,有许多不同的 PID 用于不同类型的传输反馈消息。
wireshark抓rtp包,音视频,音视频,wireshark,网络
RTCP Transport Feedback NACK PID 包用于指示 RTP 包的丢失或错误,而 RTCP Transport Feedback NACK BLP 包用于指示 RTP 包的源地址或目的地址不正确。

RTCP Transport Feedback NACK BLP: Cx027d (Frames 19164 19166 19167 19168 19169 19170 19173 lost)
Frame 19164 also lost
Frame 19166 also lost
Frame 19167 also lost
Frame 19168 also lost
Frame 19169 also lost
Frame 19170 also lost
Frame 19173 also lost

https://zhuanlan.zhihu.com/p/350908977文章来源地址https://www.toymoban.com/news/detail-614151.html

到了这里,关于【音视频第21天】RTP、RTCP结合wireshark抓包详解的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • 画质提升+带宽优化,小红书音视频团队端云结合超分落地实践

    随着视频业务和短视频播放规模不断增长,小红书一直致力于研究:如何在保证提升用户体验质量的同时降低视频带宽成本? 在近日结束的音视频技术大会「LiveVideoStackCon 2023」上海站中,小红书音视频架构视频图像处理算法负责人 剑寒 向大家分享了一项创新技术—— 基于

    2024年02月12日
    浏览(55)
  • RTP和RTCP详解

    在流媒体相关的领域,我们进场会看到RTP/RTCP,其用于流式传输的最常见的码流传输协议,位于传输层之上,控制流媒体码流传输。RTP(Real-time Transport Protocol)实时传输协议,用来为IP网上的语音、图像、元数据等多种需要实时传输的多媒体数据提供端到端的实时传输服务,

    2023年04月09日
    浏览(35)
  • wireshark提取视频数据之RTP包中提取H264和H265

    在流媒体相关问题分析时,抓包分析是非常重要的手段,比如播放有码流无图像、流媒体协议对接问题、码流花屏卡顿等问题,很多问题都可以通过抓包然后分析包数据来定位出问题,抓包最常用的工具是wireshark,其能从数据链路层、IP层、传输层、应用层等各层进行分析,

    2024年02月02日
    浏览(55)
  • WebRTC | 网络传输协议RTP与RTCP

    目录 一、UDP与TCP 1. TCP 2. UDP 二、RTP  1. RTP协议头 (1)V(Version)字段 (2)P(Padding)字段 (3)X(eXtension)字段 (4)CC(CSRC Count)字段 (5)M(Marker)字段 (6)PayloadType:区分音、视频类型 (7)Sequence Number:快速定位丢失数据包 (8)timestamp字段 (9)SSRC:区分不同源(

    2024年02月11日
    浏览(49)
  • 音视频学习-音视频基础

    ` ◼ 像素:像素是一个图片的基本单位,pix是英语单词picture的简写,加上英语单词“元素element”,就得到了“pixel”,简称px,所以“像素”有“图像元素”之意。 ◼ 分辨率:是指图像的大小或尺寸。比如1920x1080。 ◼ 位深:是指在记录数字图像的颜色时,计算机实际上是用

    2024年02月12日
    浏览(113)
  • RTP/RTCP的 NACK, PLI,SLI,FIR

      在网络环境不是太好的情况下,比如网络拥塞比较严重,丢包率可能比较高,简单实用NACK重传的机制,这样就会有大量的RTCP NACK报文,发送端收到相应的报文,又会发送大量指定的RTP报文,反而会增加网络的拥塞程度,可能导致更高的丢包率,导致接收端解码失败,导致花

    2024年02月11日
    浏览(40)
  • 音视频 FFmpeg音视频处理流程

    推荐一个零声学院项目课,个人觉得老师讲得不错,分享给大家: 零声白金学习卡(含基础架构/高性能存储/golang云原生/音视频/Linux内核) https://xxetb.xet.tech/s/VsFMs

    2024年02月12日
    浏览(69)
  • 音视频学习—音视频理论基础(2)

      音频是一种模拟信号,它是由声波转化而来的电信号。声波是通过气体、液体或固体传播的机械波,代表了声音的震动。在录制过程中,声音被转换成电信号,然后被储存在数字格式中。   声音的三要素是频率、振幅和波形   频率是指声波的振动次数,通常使用赫

    2024年04月29日
    浏览(42)
  • ffmpeg@音视频工具@音视频合并

    FFmpeg中文网 (github.net.cn) FFmpeg 是一款强大的开源跨平台音视频处理工具集,它包含了一系列命令行工具以及用于音频和视频编码解码、格式转换、抓取、流化等功能的库。FFmpeg 支持多种视频、音频格式和编解码器,能够进行音视频的压缩、封装、转码、分割、合并、过滤、抓

    2024年03月17日
    浏览(79)
  • 【音视频】ffplay解析-音视频同步

    主要解析:以音频为基准,让视频同步音频 思路 视频慢了则丢掉部分视频帧(视觉-画⾯跳帧) 视频快了则继续渲染上⼀帧 具体实现 ffplay具体源码

    2024年02月07日
    浏览(51)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包