一、RTP协议简介

RTP 数据协议负责对流媒体数据进行封包并实现媒体流的实时传输,每一个RTP 数据报都由头部(Header)和负载(Payload)两个部分组成,其中头部前12 个字节的含义是固定的,而负载则可以是音频或者视频数据。RTP 数据报的头部格式下图所示:

RTP 数据协议负责对流媒体数据进行封包并实现媒体流的实时传输,每一个RTP 数据报都由头部(Header)和负载(Payload)两个部分组成,其中头部前12 个字节的含义是固定的,而负载则可以是音频或者视频数据。RTP 数据报的头部格式下图所示:

其中比较重要的几个域及其意义如下:
CSRC 记数(CC) 表示CSRC 标识的数目。CSRC 标识紧跟在RTP 固定头部之后,用来表示RTP 数据报的来源,RTP 协议允许在同一个会话中存在多个数据源,它们可以 通过RTP混合器合并为一个数据源。例如,可以产生一个CSRC 列表来表示一个电话会议,该会议通
过一个 RTP 混合器将所有讲话者的语音数据组合为一个RTP 数据源。
负载类型(PT) 标明RTP 负载的格式,包括所采用的编码算法、采样频率、承载通道等。接收方会检查负载类型,进而决定如何处理收到的数据,比如,把数据传递给专门的解压器。

序列号(Sequence Number) 用来为接收方提供探测数据丢失的方法,但如何处理丢失的数据则是应用程序自己的事情,RTP 协议本身并不负责数据的重传。
时间戳 记录了负载中第一个字节的采样时间,接收方根据时间戳能够确定数据的到达是否受到了延迟抖动的影响,但具体如何来补偿延迟抖动则是应用程序自己的事情。
      从RTP 数据报的格式不难看出,它包含了传输媒体的类型、格式、序列号、时间戳以及是否有附加数据等信息,这些都为实时的流媒体传输提供了相应的基础。RTP 协议 的目的是提供实时数据(如交互式的音频和视频)的端到端传输服务,因此在RTP 中没有连接的概念,它可以建立在底层的面向连接或面向非连接的传输协议之 上;RTP 也不依赖于特别的网络地址格式,而仅仅只需要底层传输协议支持组帧(Framing)和分段(Segmentation)就足够了;另外RTP 本身还不提供任何可靠性机制,这些都要由传输协议或者应用程序自己来保证。在典型的应用场合下,RTP 一般是在传输协议之上作为应用程序的一部分加以实现的.

由前文可见,我们可以抓取RTP包,解析它,并观察序列号的连续情况来确定是否丢包。

二、原理总结

RTP序列号可以用来区分和标识RTP报文,并为探测是否有丢包和是否有包的传输顺序错乱等问题提供了很好的线索。

序列号通常为一个16位的无符号二进制整数,并且以1个步长逐步递增。当序列号递增到最大值时,会自动恢复为0。在英文中,这种到达最大值后清0的行为被叫做:wrap-around.

注意:除了wrap-around.情况外,序列号永远遵循连续的原则,报文每发送一次,就递增1,而不会以其他步长往前或往后跳跃。

综上:

(1)序列号的一个主要用途是丢包检测。当接收方发现序列号出现以大于1的步长跳跃的情况,就可以认为是丢包。接收方应采取措施来规避或解决这个问题;

(2)在包的传输顺序被打乱的情况下,接收方可根据序列号,对包进行排序,进而重组。

三、实例:使用wireshark抓包并检查丢包现象

(1)使用wireshark抓取所有UDP报文(这里假定RTP是基于UDP之上的)

(2)将抓取到的报文解析为RTP,如下图所示:

(3)分析报文(在报文较多且杂的情况下,可用excel导出数据查看),发现丢包:

(此文待优化)

使用wireshark检测RTP丢包问题相关推荐

  1. WireShark 分析RTP丢包率

    1.启动WireShark 打开WireShark,启动本地连接,在显示过滤框"Filter"输入"ip.addr eq 192.168.21.175",然后单 ...

  2. 使用telnet检测网络丢包情况

    我们在通信时可能会有一些丢包情况,比如路由器阻塞,我们可以使用telnet或者ping来检测网络通道问题,如果是路由器延迟造成问题我们可以浏览器的抓包软件查看情况.路由器延迟不会太大,太大都可能完全丢 ...

  3. linux 检测网络丢包率,网络问题解决思路,Linux 知识点,测试丢包率,抓包及分析...

    近期接触的项目涉及到语音传输,经常遇到信令传输的异常,或通话网络不稳定,需要抓包分析原因,故接触到这一块知识. ping 简单的连通测试 ping 45.32.79.140 -c1000 -s1024 ...

  4. Windows便捷长时间检测网络丢包

    新建一个.bat脚本,内容如下: ping 106.12.24.238 -t >c:\1.txt IP地址是要检测的对象所有.1.txt为输出检测结果文本,需要手工创建,或者命令行创建. 运行. ...

  5. wireshark看icmp丢包_wireshark ICMP

    总体抓包图 bogon,哈哈 关注看icmp报文类型和代码 win 下执行traceert C:\Users\tb>tracert jd.com 通过最多 30 个跃点跟踪 到 jd.com [ ...

  6. wireshark抓包,丢包分析

    零基础学黑客,搜索公众号:白帽子左一 前言 我们都知道,一般流量分析设备都支持pcap回放离线分析的功能,但如果抓的pcap丢了包,会影响最终安全测试的效果. 比如说竞测现场需要提供pcap包测试恶意 ...

  7. Wireshark tcptrace图关于丢包重传细节图解

    上周六写了< 在Wireshark的tcptrace图中看清TCP拥塞控制算法的细节(CUBIC/BBR算法为例)>,收到一封邮件,说我文中的图示画错了.         确实,关于CUB ...

  8. 在UDP应用层面测试实现丢包的检测

    我们已经已经做好在FPGA上的UDP的用户接口,也在PC上做好了UDP的收发函数,这里可以加上一些逻辑和代码实现UDP是否丢包以及是否错报的实验. 首先来看开UDP接收的用户层面的接口: 这里给出了u ...

  9. 记一次TCP丢包带来的重大性能问题

    背景 一个项目对接第三方接口数据.对方是TCP接口,发送数据频率很高.平均2毫秒发送三四千个字节.由于TCP协议的粘包拆包问题,我这里接收到的数据需要对粘包拆包按照对方数据的格式进行处理.对接了一段时 ...

最新文章

  1. 3-runtime 之 Tagged Pointer
  2. 改进的二值图像像素标记算法及程序实现(含代码)
  3. Express res.render 学习笔记
  4. postmapping注解_Swagger常用注解
  5. Jenkins学习总结(6)——Jenkins 的安全实践
  6. C语言性能优化书籍,Android应用性能优化 (埃尔韦) 中文PDF扫描版
  7. airtestide 下载后打不开_惠普打印机驱动怎么下载 惠普打印机驱动安装方法【步骤】...
  8. jquery常用基本用法,让你爱上它!
  9. 入门必备-经典的分子动力学软件LAMMPS简版手册
  10. Silvaco TCAD仿真2——Silvaco TCAD 档名
  11. 计算机主板的接口结构名称10,[pc玩家]主板接口大盘点,细数历年主流的主板接口:内部接口...
  12. json转xml报[java.lang.NoClassDefFoundError: nu/xom/Serializer]
  13. 60行C代码实现一个shell
  14. antd页面多表单校验
  15. 【.NET】用Aspose.Words for .NET动态生成word文档中的数据表格
  16. OpenCV python去除图片水印
  17. 数字孪生技术海上风电场解决方案
  18. 联芸科技冲刺科创板上市:业绩表现不稳定,实控人方小玲为美国籍
  19. C++语言程序设计全真模拟试卷,2017年全国计算机二级C++语言程序设计考试试题...
  20. macbook 定时提醒发送邮件

热门文章

  1. 22-02-08数据库迁移sql问题
  2. SwiftUI学习笔记之@State, @Binding
  3. Codeforces 1077b Disturbed People
  4. STM32定时 计算公式
  5. python 弱引用
  6. 初学larval 第一篇(大神绕道哦,针对新手友好的一篇)
  7. 计算机网络知识点总结——第三章数据链路层
  8. 1.9G的视频被压缩为64K
  9. download failed: assets/main/import/09/09f53264-cd95-4751-99ad-d516c164dd80._cconb.dbbin, status: 40
  10. Linux命令:configure --prefix=/ 有什么作用