WebRTC中 setup:actpass、active、passive

news2024/11/17 13:20:00

1、先看一下整个DTLS的流程

 setup:actpass、active、passive就发生在Offer sdp和Anser SDP中

Offer的SDP是setup:actpass,这个是服务方:

v=0\r
o=- 1478416022679383738 2 IN IP4 127.0.0.1\r
s=-\r
t=0 0\r
a=group:BUNDLE 0 1\r
a=extmap-allow-mixed\r
a=msid-semantic: WMS 38360753-89ae-42b5-b793-203add491a5c\r
m=audio 62616 UDP/TLS/RTP/SAVPF 111 63 9 0 8 13 110 126\r
c=IN IP4 125.88.8.165\r
a=rtcp:9 IN IP4 0.0.0.0\r
a=candidate:990939686 1 udp 2122260223 10.2.107.35 62616 typ host generation 0 network-id 1\r
a=candidate:3759385191 1 udp 1686052607 125.88.8.165 62616 typ srflx raddr 10.2.107.35 rport 62616 generation 0 network-id 1\r
a=candidate:3317325490 1 tcp 1518280447 10.2.107.35 9 typ host tcptype active generation 0 network-id 1\r
a=ice-ufrag:6bmy\r
a=ice-pwd:vWzBuDSxDLpkoqKw3eUns+Rm\r
a=ice-options:trickle\r
a=fingerprint:sha-256 10:12:BA:60:E9:46:72:75:75:2D:E1:45:30:2D:4A:C3:64:8F:4C:12:2D:82:5A:99:93:37:8B:4B:2F:8D:1A:AB\r
a=setup:actpass\r
a=mid:0\r

Answer的SDP是setup:active,这个是客户方

v=0\r
o=FreeSWITCH 1692858855 1692858856 IN IP4 10.2.107.35\r
s=FreeSWITCH\r
c=IN IP4 10.2.107.35\r
t=0 0\r
a=msid-semantic: WMS xkvzqsQ0Gh1p7wIyz5KXUqYTjrJDBaZB\r
m=audio 19540 UDP/TLS/RTP/SAVPF 111 110\r
a=rtpmap:111 opus/48000/2\r
a=fmtp:111 useinbandfec=1; minptime=10; stereo=1; sprop-stereo=1\r
a=rtpmap:110 telephone-event/48000\r
a=silenceSupp:off - - - -\r
a=ptime:20\r
a=sendrecv\r
a=fingerprint:sha-256 39:BF:A6:99:4D:64:DF:75:DB:98:52:25:A2:F6:31:F5:69:17:EE:1B:FF:04:EA:7D:91:39:5D:DF:47:22:B9:B7\r
a=setup:active\r
a=rtcp-mux\r

客户方需要找服务方认证

2、用一个真实的例子解释为什么这很烦

可以很清楚的看到这其中有什么问题。如果看不出来的话,我会用一个关于SDP a=setup真实的用例来解释:

# 让我们假设Alice想要与Bob进行音频和数据通道通信,所以Alice创建了她的本地RTCPeerConnection,并且得到了相应的SDP请求。

# 根据RFC 5763,SDP请求的a=setup属性必须是“actpass”,也就是应答方(Bob)需要决定谁是DTLS用户谁是DTLS服务器。

# Bob生成相应的SDP应答,其中包括a=setup:active,意思是Bob成为了DTLS用户,而Alice成为DTLS服务器。

# 在ICE和DTLS处理之后,Alice和Bob两个人互相交换了他们的音频和数据。

# 之后,Bob想要在通信中加上网络摄像头捕捉的视频,所以他得到了一个包括网络摄像头流信息的SDP重请求。

# 还是,依据RFC 5673,这个SDP重请求中要有a=setup:actpass。

# Alice接到SDP重请求并且产生一个重响应。

# 为了保持现有的DTLS关联开放,这个SDP重响应必须有a=setup:passive项。

你注意到了吗?为了不改变传输,SDP重请求和重响应必须表示与在最初SDP交换中a=setup属性相不同的值。

3、媒体协商

SDP内容十分重要,交换了ICE需要的Username,Password,以及后面的DTLS需要的证书的验证指纹,用来验证证书是否被中间人替换。部分SDP内容如下:

a=ice-ufrag:6bmy\r
a=ice-pwd:vWzBuDSxDLpkoqKw3eUns+Rm\r
a=ice-options:trickle\r
a=fingerprint:sha-256 10:12:BA:60:E9:46:72:75:75:2D:E1:45:30:2D:4A:C3:64:8F:4C:12:2D:82:5A:99:93:37:8B:4B:2F:8D:1A:AB\r
a=setup:actpass\r
a=mid:0\r

a=fingerprint也就是指纹,那指纹是用来干什么的呢?

指纹就是用来我们进行数据加密的时候,来验证这个证书的。那它首先通过信令层将SDP中的证书的指纹下发给对方,那么下次对数据加密前的它进行一下数据证书的交换,交换证书是通过DPLS进行,那么通过DPLS进行证书交换的时候,通过这个指纹去验证你这个证书的有效性,那如果这个证书验证是有效性的,然后后面你才能进行数据加密然后进行传输。如果通过指纹这个证书不匹配,那说明你这个连接也是有问题的。那这个时候就不能进行传输。通过以上这个种种方式呢,在打通的时候进行一次验证在传数据的时候在交换证书的时候也要进行验证,那么通过这个层层的安全的验证,才能保证整个webRTC传输的安全性。以上就是安全性相关的一些描述。当然最后进行算法加密的时候你可以使用这个a=crypto指定的加密算法,也可以通过DPLS交换的证书里的指定的加密算法进行加密

完成握手后就正常传输数据了

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

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

相关文章

csharp开发日常之Activator.CreateInstance构造函数生成实例

目录 一、需求:项目中经常需要动态生成对象,而非采用new关键字方式,例如Java里面的根据类全限定名反射生成对象实例。 二、方案:采用Activator.CreateInstance 三、代码例子演示 1、代码结构 2、创建接口 3、创建IObjcet接口的…

索尼 toio™ 应用创意开发征文|教育与游戏的完美融合:toio™核心Q宝引领数字学习新潮流

引言 在科技与创意碰撞的时代,索尼toio™核心Q宝不仅是一款吸引人的娱乐玩具,更是一种融合编程与教育的创新平台。我一直寻找一个能够将编程和教育完美结合的方式,而toio™给了我这个机会。接下来,我将详细介绍如何用toio™开发一…

【云计算网络安全】解析DDoS攻击:工作原理、识别和防御策略 | 文末送书

文章目录 一、前言二、什么是 DDoS 攻击?三、DDoS 攻击的工作原理四、如何识别 DDoS 攻击五、常见的 DDoS 攻击有哪几类?5.1 应用程序层攻击5.1.1 攻击目标5.1.2 应用程序层攻击示例5.1.3 HTTP 洪水 5.2 协议攻击5.2.1 攻击目标5.2.2 协议攻击示例5.2.3 …

无需公网IP,实现外网远程访问管家婆ERP进销存系统的方法

文章目录 前言 1.管家婆服务2. 内网穿透2.1 安装cpolar内网穿透2.2 设置远程访问 3. 固定访问地址4. 配置固定公网访问地址 前言 管家婆辉煌系列产品是中小企业进销存、财务管理一体化的典范软件,历经十余年市场的洗礼,深受广大中小企业的欢迎&#xff…

跟着视频学习java,发现swagger打不开?怎么解决

前因 现在到处都在卷java,不会java的前端不是好前端。 这不,周围有前端同学开始学java了。 昨天他突然找我问说引入依赖,配置之后swagger打不开了。 分析过程 1、 查看他的swagger版本,让他试了对应路径/swagger-ui/index.h…

直饮水表和智能水表有什么区别?

直饮水表和智能水表是两种不同类型的水表,它们的主要区别在于功能和应用场景。下面小编整理了这两款水表的一些知识点,一起来看下吧! 直饮水表是一种特殊的水表,主要用于家庭和公共场所的直饮水系统中。它可以实时监测水的流量,帮…

JavaScript 之 Symbol 数据类型

一、简介 ​ symbol类型是ES6新引入的一种基本数据类型,该类型具有静态属性和静态方法。其中静态属性暴露了几个内建的成员对象,静态方法暴露了全局的symbol注册。 ​ symbol类型具有以下特点:① 唯一性:每个symbol值都是唯一的…

大厂面试题之影响项目测试进度的因素有哪些?如何解决?

测试进度,是领导层非常关心的问题,测试同学把控好项目测试进度,必然能让面试官为你加分。 在日常测试过程中,要把控好测试进度,了解影响测试进度的因素是必不可少的,那么,影响项目测试进度的因…

【牛客刷题】bfs和dfs (二叉树层序遍历、矩阵最长递增路径、被围绕的区域)

二叉树层序遍历 vector<vector<int> > levelOrder(TreeNode* root) {// write code herevector<int> res;vector<vector<int>> result;if (root nullptr) return result;queue<TreeNode*> que;que.push(root);while (!que.empty()) {int …

LeetCode刷题笔记【25】:贪心算法专题-3(K次取反后最大化的数组和、加油站、分发糖果)

文章目录 前置知识1005.K次取反后最大化的数组和题目描述分情况讨论贪心算法 134. 加油站题目描述暴力解法贪心算法 135. 分发糖果题目描述暴力解法贪心算法 总结 前置知识 参考前文 参考文章&#xff1a; LeetCode刷题笔记【23】&#xff1a;贪心算法专题-1&#xff08;分发饼…

Java8实战-总结19

Java8实战-总结19 使用流映射对流中每一个元素应用函数流的扁平化 使用流 映射 一个非常常见的数据处理套路就是从某些对象中选择信息。比如在SQL里&#xff0c;你可以从表中选择一列。Stream API也通过map和flatMap方法提供了类似的工具。 对流中每一个元素应用函数 流支持…

回归预测 | MATLAB实现PCA-BP主成分降维结合BP神经网络多输入单输出回归预测

回归预测 | MATLAB实现PCA-BP主成分降维结合BP神经网络多输入单输出回归预测 目录 回归预测 | MATLAB实现PCA-BP主成分降维结合BP神经网络多输入单输出回归预测效果一览基本介绍程序设计参考资料 效果一览 基本介绍 MATLAB实现PCA-BP主成分降维算法结合BP神经网络多输入单输出回…

java八股文面试[设计模式]——行为型模式

目录 策略模式 观察者模式 责任链模式 模板方法模式 状态模式 行为型模式关注的是各个类之间的相互作用&#xff0c;将职责划分清楚&#xff0c;使得我们的代码更加地清晰。 策略模式 策略模式太常用了 下面设计的场景是&#xff0c;我们需要画一个图形&#xff0c;可选…

leetcode872. 叶子相似的树(java)

叶子相似的树 题目描述递归 题目描述 难度 - 简单 leetcode - 872. 叶子相似的树 请考虑一棵二叉树上所有的叶子&#xff0c;这些叶子的值按从左到右的顺序排列形成一个 叶值序列 。 举个例子&#xff0c;如上图所示&#xff0c;给定一棵叶值序列为 (6, 7, 4, 9, 8) 的树。 如果…

cuda显存访问耗时

背景&#xff1a; 项目中有个数据量大小为5195 * 512 * 128float 1.268G的显存&#xff0c;发现有个函数调用很耗时&#xff0c;函数里面就是对这个显存进行128个元素求和&#xff0c;得到一个5195 * 512的图像 分析 1. 为什么耗时 直观上感觉这个流程应该不怎么耗时才对&a…

TDengine 官网换了新“皮肤”,来看看这个风格是不是你的菜

改版升级&#xff0c;不同以“网”&#xff01;为了更好地服务客户&#xff0c;让大家能够更便捷、清晰地了解我们的产品和功能&#xff0c;我们决定给 TDengine 官网换个新“皮肤”~精心筹备下&#xff0c;新官网终于成功与大家见面啦——https://www.taosdata.com/。TDengine…

《向量数据库指南》——AI原生向量数据库Milvus Cloud 2.3稳定性

在当今的互联网时代,稳定性是所有系统和应用程序的关键要素。无论是大型数据中心还是个人电脑,稳定性都是保证正常运行和用户体验的基础。在这个背景下,我们来谈谈 Milvus,一个开源的向量数据库,它在 2.1.0 版本中引入了内存多副本的概念。 Milvus 是一个开源的向量数据库…

9:00面试,9:08就出来了,问的实在有点变态

从小厂出来&#xff0c;没想到在另一家公司又寄了。 到这家公司开始上班&#xff0c;加班是每天必不可少的&#xff0c;看在钱给的比较多的份上&#xff0c;就不太计较了。没想到8月一纸通知&#xff0c;所有人不准加班&#xff0c;加班费不仅没有了&#xff0c;薪资还要降30%,…

osgEarth::ElevationQuery的setMaxTilesToCache函数的作用

【引子】 osgEarth::ElevationQuery类用于查询高程&#xff0c;自测效率比较低&#xff08;大概每个点需要四五十毫秒&#xff09;&#xff0c;成员函数setMaxTilesToCache(int)&#xff0c;之前看说明仍然不是很确认其具体的意义&#xff0c;想尝试设置是否能加速下。 看之前的…

MATLAB实现TopSis优劣解距离法——分析《世界征服者3》将领排名

问题背景 世界征服者3游戏中有150的将领角色&#xff0c;每个将领都有自己的兵种优势、军阶、技能等不同的属性&#xff0c;如何教务客观、综合全面地选拔出其中排名前50的将领&#xff1f;基于TOPSIS优劣解距离法以及聚类算法&#xff0c;给出大家较为客观的排名。 一.问题描…