RTCP/SRTCP介绍

news2024/11/26 8:51:53


RFC 4585 - Extended RTP Profile for Real-time Transport Control Protocol (RTCP)-Based Feedback (RTP/AVPF)


RFC 5124 - Extended Secure RTP Profile for Real-time Transport Control Protocol (RTCP)-Based Feedback (RTP/SAVPF)

译文: http://www.gpssoft.cn/download/protocol/RFC-3550-%E4%B8%AD%E6%96%87%E7%89%88.pdf

参考:
RTCP协议详解_bytxl的博客-CSDN博客

https://www.cnblogs.com/x_wukong/p/5692126.html

几种RTCP报文(携带不同的控制信息):

packet type (PT) = 200, 标识本包是 RTCP SR 报文,发送者报告,wireshark抓包过滤rtcp.pt==200

packet type (PT) = 201, 标识本包是 RTCP RR 报文,接收者报告

packet type (PT) = 202, 标识本包是 RTCP SDES 报文, 源描述,包括 CNAME

packet type (PT) = 203, 标识本包是 RTCP BYE报文, 参与者结束标识

packet type (PT) = 204, 标识本包是 RTCP Application-specific报文

RTCP: Real-time ControlProtocol,实时传输控制协议

在RTP会话期间,每个会话参与者周期性地向所有其他参与者发送RTCP控制信息包,如下图所示:

RTCP功能:

1.    提供分发数据的质量反馈(The primary function is to provide feedback on the quality of the data distribution.)

 2.   RTCP携带一个名为CNAME的RTP源的持久传输级标识符(RTCP carries a persistent transport-level identifier for an RTP source called the canonical name or CNAME)

 3.  必须控制速率使得RTP可以让更多的参与者加入,每个参与者都对其他所有参与者发送他的控制报文,这就使得人人都可以独立的观察参与者的数量。(The rate must be controlled in order for RTP to scale up to a large number of participants. By having each participant send its control packets to all the others, each can independently observe the number of participants. )

几点约束:

1. 每一个周期传送的混合报文必须包含一个报告报文(SR或者RR),并且放在第一个的是报告报文(SR或者RR)以便于确认头。

2. 每一个混合的 RTCP 报文必须包含带有CNAME项的SDES 报文。

SR报文格式

如上图,SR报文由三个部分组成。

第一部分:8个字节头

version(V):2 bit,RTP版本号,同RTP包头域。

padding(P):1 bit,如果设定 padding,在RTCP报文的末端就会包含一个或者多个 padding 字节,不算控制信息。最后一个字节的 padding 是个计数,标识需要忽略多少个 padding 字节(包括自己)。

reception report count (RC): 5 bits ,该SR包中的接收报告块的数目,可以为零。(The number of reception report blocks contained in this packet.  A value of zero is valid.)

packet type (PT):8 bits,SR包是200。

length:16 bits,是该SR包以32比特为单位的总长度减一,包括头和 padding(减一是为了零长度有效和避免无限循环来寻找混合的 RTCP 报文,而 32-bit 字是避免对四的倍数的有效检查)。

SSRC of sender(SSRC):32 bits,SR包发送者的同步源标识符。与对应RTP包中的SSRC一样。

第二部分:发送者信息, 20 个字节,在每个 SR 报文中都存在。它是对该sender的数据传输的总结。

NTP timestamp:64 bits,(Network time protocol),SR包发送时的绝对时间值。NTP的作用是同步不同的RTP媒体流。

RTP timestamp:与NTP时间戳对应,与RTP数据包中的RTP时间戳具有相同的单位和随机初始值。

Sender’s packet count:从开始发送包到产生这个SR包这段时间里,发送者发送的RTP数据包的总数. SSRC改变时,这个域清零。

Sender`s octet count:从开始发送包到产生这个SR包这段时间里,发送者发送的净荷数据的总字节数(不包括头部和padding)。发送者改变其SSRC时,这个域要清零。这个域可用来估计平均payload数据速率。

第三部分:根据发送者从上次报告侦听到的其它源的数量来确定零个或更多的接收报告块。每一个接收报告块都含有从单个同步源的关于接收 RTP 报文的统计。(The third section contains zero or more reception report blocks depending on the number of other sources heard by this sender since the last report.  Each reception report block conveys statistics on the reception of RTP packets from a single synchronization source.)

SSRC_n (source identifier):32 bits,该报告块中包含的是从该源接收到的包的统计信息。

lost:8 bits,丢失率,表明从上一个SR或RR包发出以来从同步源n(SSRC_n)来的RTP数据包的丢失率。

cumulative number of packets lost:24 bits,累计的包丢失数目,从开始接收到SSRC_n的包到发送SR,从SSRC_n传过来的RTP数据包的丢失总数。

extended highest sequence number received:32 bits,从SSRC_n收到的RTP数据包中最大的序列号,

interarrival jitter:32 bits,接收抖动,RTP数据包接收时间的统计方差估计

Jitter是一个统计变量,它用来表征RTP数据包与包的传输时间之间的差异程度。具体的推算公式如下:

J(i) = J(i-1) + (|D(i-1,i)| - J(i-1))/16

i时刻的jitter是由i-1时刻的jitter推出的。其中D(i-1,i)表达式如下:

D(i,j) = (Rj - Ri) - (Sj - Si) = (Rj - Sj) - (Ri - Si)

Si表示i包里的RTP timestamp,Ri表示i包到达目的端时的timestamp。

Last SR (LSR): 32 bits,上次SR时间戳,取最近从SSRC_n收到的SR包中的NTP时间戳的中间32比特。如果目前还没收到SR包,则该域清零。

Delay since last SR (DLSR) : 32 bits,上次SR以来的延时, 即上次从SSRC_n收到SR包到发送本报告的延时。Unit: 1/65536 s

RR报文格式

相比SR报文,除了 pt = 201,和删除SR报文的第二部分以外,其他与SR报文相同。

SRTCP:

RFC 3711: The Secure Real-time Transport Protocol (SRTP)

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/750274.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

[SAM]A Comprehensive Survey on Segment Anything Model for Vision and Beyond

A Comprehensive Survey on Segment Anything Model for Vision and Beyond Abstract 本文是SAM的第一篇综述 讲述了SAM的发展历史、进展、在不同任务、不同数据类型下的应用 首先介绍专有名词和背景知识 其次介绍SAM再图像处理等应用中的优点和局限 以及SAM未来展望 git链接…

C# Linq 详解一

目录 一、概述 二、Where 三、Select 四、GroupBy 五、First / FirstOrDefault 六、Last / LastOrDefault​​​​​​​ 一、概述 语言集成查询 (LINQ) 是一系列直接将查询功能集成到 C# 语言的技术统称。 数据查询历来都表示为简单的字符串,没有编译时类型…

Exceptional C++读书笔记——泛型程序设计与C++标准库

更新中——上次更新&#xff08;2023.07.13-23:07&#xff09; 迭代器&#xff08;iterator&#xff09; #include <iostream> #include <vector> #include <iterator> #include <algorithm>int main() { std::vector<int> e; std::copy(…

第二章编程模型(Cortex-M7 Processor Programmers Model)

第二章编程模型 本章描述了程序员模型。它包含以下部分: 关于2-2页的程序员模型。2-3页的操作和执行方式。指令集摘要见第2-4页。系统地址映射在2-5页。2-8页的独家监视器。处理器核心寄存器在第2-9页。例外情况见第2-10页。 2.1关于编程模型 本章概述了描述实现定义选项的…

力扣题目解析:生成奇数个字符的字符串的巧妙方法

本篇博客会讲解力扣“1374. 生成每种字符都是奇数个的字符串”的解题思路&#xff0c;这是题目链接。 这道题的解题思路很巧妙&#xff0c;它利用了字符串长度n的奇偶性&#xff1a; 如果n是奇数&#xff0c;那么就把字符串全部填充为’a’&#xff0c;这样每种字符都是奇数个…

posix ipc之共享内存

note 1.shm_open的pathname不能带路径名&#xff0c;shm_open的创建目录为/dev/shm 2.使用ftruncate设置内核共享内存实例的大小 3.使用mmap进行有名映射(实例反应在文件系统的一个文件) code #include <sys/mman.h> #include <sys/stat.h> #include <fcntl…

【动手学习深度学习--逐行代码解析合集】16深度卷积神经网络(AlexNet)

【动手学习深度学习】逐行代码解析合集 16深度卷积神经网络&#xff08;AlexNet&#xff09; 视频链接&#xff1a;动手学习深度学习–深度卷积神经网络&#xff08;AlexNet&#xff09; 课程主页&#xff1a;https://courses.d2l.ai/zh-v2/ 教材&#xff1a;https://zh-v2.d2…

网络安全与防范

1.重要性 随着互联网的发达&#xff0c;各种WEB应用也变得越来越复杂&#xff0c;满足了用户的各种需求&#xff0c;但是随之而来的就是各种网络安全的问题。了解常见的前端攻击形式和保护我们的网站不受攻击是我们每个优秀fronter必备的技能。 2.分类 XSS攻击CSRF攻击网络劫…

瑞萨RFP工具使用问题总结

最近在用瑞萨的RH850&#xff0c;需要用到瑞萨提供的刷新工具RFP&#xff08;Renesas Flash Programmer&#xff09;&#xff0c;但是总是遇到一些问题&#xff0c;除了一些能够在官网上找到答案的问题&#xff0c;还遇到了其他各种各样的问题&#xff0c;这里记录一下问题和对…

【问题分析解决】git添加.gitignore后不生效问题

一&#xff0c;问题现象 在已经提交过的git管理的项目中&#xff0c;新增加一个.gitignore文件&#xff0c;或者修改.gitignore文件之后&#xff0c;新增的内容不生效。 二&#xff0c;问题原因 因为我们误解了.gitignore文件的用途&#xff0c;该文件只能作用于Untracked F…

AI图像生成无需API开发连接集简云数据表,实现生成图片自动同步能力

1 场景描述 人工智能的出现&#xff0c;各个领域都开始尝试将AI作为提高工作效率的必备工具。除了AI对话等&#xff0c;越来越多的AI图像生成工具也出现在市场上。这些AI图像生成工具可以自动创建惊人的图像、艺术作品和设计&#xff0c;从而帮助设计师和创意人员更快速地实现其…

工业交换机网管运维方案

工业交换机设备商对网管的需求 对工业交换机设备提供商来说&#xff0c;如下几个因素都是需要面对的&#xff1a; 最终客户的需要&#xff1a; 网络和工业交换机设备的可管理性&#xff0c;已经被越来越多的最终用户所重视&#xff0c;在设备采购中&#xff0c;多数时候甚至是…

电脑内存错误怎么办?

内存是电脑的基本配件之一&#xff0c;一款电脑的内存大小能够在一定程度上决定这款电脑的性能。我们在使用电脑的过程中总会出现一些关于内存大大小小的问题&#xff0c;其中电脑提示内存错误的原因是什么?电脑内存错误怎么解决呢? 内存错误的原因 电脑的很多故障往往都会反…

面试题更新之-本地存储是什么?

文章目录 本地存储是什么Cookiesjs中如何使用Cookies localStoragejs中如何使用localStorage sessionStoragejs中如何使用sessionStorage 本地存储是什么 本地存储是指将数据保存在用户的本地设备上&#xff0c;以供后续使用和访问。通过本地存储&#xff0c;网页和应用程序可…

Day2 图连通

A - PRO-Professor Szu 简单的来说就是 缩点、反图拓扑。 需要注意不与 n 1 n1 n1 联通的点可能会使得一些点的入度无法为 0 而无法入队&#xff0c;消除这些点的影响即可。 当时写的&#xff1a; D - BLO-Blockade 非割点&#xff1a; 2 ( n − 1 ) 2(n-1) 2(n−1)。 …

【环信集成教程】环信的那些”已读“功能实现及问题解决

写在前面 在调用环信的消息回执时&#xff0c;是否有以下的烦恼 1、发送了消息已读回执&#xff0c;为什么消息列表页的未读数没有发生变化&#xff1f; 2、发送了消息已读回执&#xff0c;为什么消息漫游拉取不到已读状态&#xff1f; 如果你有这些烦恼&#xff0c;那就继续…

大量SDK设备接入时,如何巧妙配置EasyCVR平台参数?

EasyCVR视频融合平台可支持海量视频的轻量化接入与汇聚管理。在视频能力上&#xff0c;EasyCVR可实现视频直播、录像、回放、检索、云存储、告警上报、语音对讲、电子地图、集群、智能分析以及平台级联等。平台支持多协议接入&#xff0c;包括国标GB28181、RTMP、RTSP/Onvif、海…

【QT/OpenCV】QT实现张正友相机标定

相机标定 01、相机标定02、OpenCV函数及其张正友标定法2.1、相机标定步骤2.2、相机标定相关函数2.2.1 提取角点--- findChessboardCorners2.2.2 亚像素角点提取1--- find4QuadCornerSubpix2.2.3 亚像素角点提取2--- cornerSubPix2.2.4 绘制内角点 --- drawChessboardCorners2.2…

操作系统复习(非抢占式的优先数调度算法)

今天在写题目的时候遇到了一个问题&#xff0c;在非抢占式的优先数调度算法中&#xff0c;存在一种情况。优先级相同&#xff0c;并且同时到达&#xff0c;这种情况下&#xff0c;短作业优先。例如&#xff1a; 这种情况下&#xff0c;调度顺序为&#xff1a;P1、P2、P4、P3。

终极实时测试工具:NCrunch 4.17 for vs19-22 Crack

适用于 .NET 的终极实时测试工具 在编码时以内联方式查看实时测试结果和指标。 Visual Studio 的自动并发测试 NCrunch 是一个全自动测试扩展&#xff0c;旨在使编码和测试变得轻而易举。 忘记停下来运行测试&#xff0c;让 NCrunch 为您完成工作。 以您认为的速度编码和测试…