从零实现WebRTC(二):WebRTC的通信过程

news2024/11/26 3:31:36

文章目录

  • 一、WebRTC需要解决的问题
  • 二、ICE(Interactive Connectivity Establishment)
  • 三、ICE的详细步骤
  • 四、知识点四


一、WebRTC需要解决的问题

WebRTC是由google提出的的一个用于端到端实现p2p音视频通信的框架。比起其他的hls, http-flv等直播方案,webrtc在公网的条件中能够做到百毫秒级别的延迟,非常厉害。

WebRTC是一个集成了音视频通话中的多个应用的框架,主要是想尝试解决音视频通话中的一系列实时音视频应用问题,比如采集,编码,解码,前后处理,传输,缓冲,渲染,美颜,回声消除等等等等。

要实现p2p通信,最重要的一点就是必须让两个peer知道对方的公网ip地址。但是实际上ip地址的数量有限,我国很多设备基本都没有独立的公网IP,而是位于NAT之后,所以要实现P2P通信,必须要实现NAT穿透。说到NAT穿透,就会涉及到WebRTC中的几个概念。

二、ICE(Interactive Connectivity Establishment)

ice是一个p2p的连接框架,它目的在于确定可用于双端通信的传输地址对。

ICE 基本思想,每一个代理拥有多种可用于与对端通信的候选传输地址(TRANSPORT ADDRESSES,针对特定传输协议(一般为 UDP 协议)的 IP 地址和端口的组合),ICE 通过不断地尝试以确定真正可用的传输地址对;

可能可行的地址对有以下几种:

  1. 直接连接的网络接口上的传输地址.
  2. NAT 公共端的转义传输地址,即服务器反射地址(server reflexive).
  3. TURN 服务器上分配的传输地址,即转发地址(relayed address),中继地址.

在这里插入图片描述
在这里,呼叫需要交换两种信息,即候选地址和媒体信息。
候选地址用于建立网络连接,存储着和网络连接相关的参数;
媒体信息SDP用于描述在对等连接上传出的数据的信息,比如音频,视频和应用数据。

三、ICE的详细步骤

在这里,我们使用这张图来详细讲解ICE的所有步骤:
在这里插入图片描述

  1. 收集候选传输地址:候选传输地址,指的是有可能可以用于接收媒体以建立对等连接的IP地址和端口,其必须要在呼叫的时候收集而不能提前收集。
    候选传输地址的类型如下:
候选地址类型传达对端方式用法
主机候选地址 host candidate信令服务器从网卡中获取到本地传输地址;若该地址位于NAT之后,则为私有地址,无法在子网之外路由到
信令服务器反射地址,SERVER REFLEXIVE CANDIDATE信令服务器从发送给 STUN 服务器的 STUN 检查中获取的传输地址,若该地址位于 NAT 之后,则为最外层 NAT 的公共 IP 地址;
对端反射地址,PEER REFLEXIVE CANDIDATESStun Binding 请求从其他 ICE 代理发送的 STUN 连接检查中获取的传输地址,该地址是一种在连接检查期间发送的新候选项,不通过信令通道发送;
对端反射地址,PEER REFLEXIVE CANDIDATESStun Binding 请求从其他 ICE 代理发送的 STUN 连接检查中获取的传输地址,该地址是一种在连接检查期间发送的新候选项,不通过信令通道发送;
中继地址,RELAYED CANDIDATES信令服务器媒体中继服务器的传输地址,通过 TURN 分配请求获取;

四、知识点四


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

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

相关文章

ChatGPT的来源-InstructGPT论文简要介绍

文章目录前言一、ChatGPT是什么?二、ChatGPT的前身InstructGPT论文解读论文下载地址:主要内容:模型训练数据类型结果效果示例总结前言 现在大火的ChatGPT功能十分强大,不仅可以回答用户问题,编写故事,甚至…

Spring Cloud Alibaba Sentinel 熔断降级与OpenFeign整合

熔断降级 概述 对调用链路中不稳定的资源进行熔断降级也是保障高可用的重要措施之一。一个服务常常会调用别的模块,可能是另外的一个远程服务、数据库,或者第三方 API 等。例如,支付的时候,可能需要远程调用银联提供的 API&…

关于基线长度对双天线GNSS测姿精度的影响

文章目录一、GNSS测姿原理1. 载波相位双差求解基线向量2. GNSS姿态角表示二、基线长度对GNSS测姿精度的影响三、GNSS定向产品精度描述实例四、参考文献在GNSS定向模块或者板卡的指标参数中,我们一般会看到航向的测量精度和基线的长度相关。在实际使用,用…

Python if else条件语句详解

在刚学习 Python 的时候,我们看到的代码都是顺序执行的,也就是先执行第1条语句,然后是第2条、第3条……一直到最后一条语句,这称为顺序结构。 但是对于很多情况,顺序结构的代码是远远不够的,比如一个程序限…

BERT在CNN上也能用?看看这篇ICLR Spotlight论文丨已开源

如何在卷积神经网络上运行 BERT?你可以直接用 SparK —— 字节跳动技术团队提出的提出的稀疏层次化掩码建模 ( Designing BERT for Convolutional Networks: Sparse and Hierarchical Masked Modeling ),近期已被人工智能顶会 ICLR 2023 收录为 Spotligh…

论文投稿指南——中文核心期刊推荐(植物保护)

【前言】 🚀 想发论文怎么办?手把手教你论文如何投稿!那么,首先要搞懂投稿目标——论文期刊 🎄 在期刊论文的分布中,存在一种普遍现象:即对于某一特定的学科或专业来说,少数期刊所含…

JavaScript原型、原型链、原型方法

文章目录原型和原型链prototype、 __ proto __ 、constructor原型链原型方法instanceOfhasOwnPropertyObject.create()、new Object()总结原型和原型链 prototype、 __ proto __ 、constructor 首先我们看下面一段代码 // 构造函数Personfunction Person(name, age) {this.na…

无法访问org.springframework.boot.SpringApplication

问题 更新idea版本后使用过程中发生下面的错误 Error:(3, 32) java: 无法访问org.springframework.boot.SpringApplication 错误的类文件: D:\maven-repository\org\springframework\boot\spring-boot\3.0.0\spring-boot-3.0.0.jar(org/springframework/boot/SpringApplicati…

【ChatGPT】如何使用python调用ChatGPT API?

是什么ChatGPT? ChatGPT 是由 OpenAI 开发的一个语言模型。OpenAI 是一家领先的人工智能研究机构。ChatGPT 基于变换器架构,使用深度学习生成会话风格的文本。该模型在大量文本数据上进行训练,并可以针对特定任务进行微调。例如,它…

2023年,产业互联网八大趋势

从全世界的TO B发展线来看,中国的TO B企业不是脚步最快的,但它们却也正在通过汲取中国数字经济高速发展的养料不断成长,同时主动下沉,成为新的产业数字化的底盘,做撑举起未来数字中国的无名力量。 作者|皮爷 出品|…

UDS 诊断

UDS全称为Unified Diagnostic Services,统一的诊断服务。由ISO-14229系列标准定义。 诊断通信的过程从用户角度来看非常容易理解,诊断仪发送诊断请求(request),ECU给出诊断响应(response),而UDS就是为不同…

1.9实验9:配置虚链路

1.4.4实验9:配置虚链路 实验目的(1) 实现OSPF 虚链路的配置 (2) 描述虚链路的作用 实验拓扑配置虚链路实验拓扑如图1-19所示。[1] 图1-19 配置虚链路 实验步骤

第2集丨Java中的数据类型汇总

目录一、数据类型分类二、基本数据类型取值范围数据类型的转换byte和char的关系三、包装类一、数据类型分类 二、基本数据类型 取值范围 比特(bit位) : 数据运算得最小存储单位字节(byte) : 数据最小存储单位bit和byte可以互相转换得,1 byte 8 bit位默认情况下&am…

2023开学季哪款电容笔值得买?高品质电容笔品牌推荐

我们可以看出,原先的苹果电容笔的价格卖得非常昂贵。事实上,对于那些没有过多预算的人来说,平替电容笔是最好的选择。想象一下,一款原装的苹果电容笔,能够购买四款平替电容笔,而平替电容笔在性能上&#xf…

修改windows系统网卡的MAC地址方法

文章目录前言修改MAC地址验证MAC地址是否修改前言 工作中遇到通过绑定IP地址和MAC地址认证才能上网的网络,需要修改指定的IP地址和MAC地址,修改IP地址比较简单,但是MAC地址之前好像没有改过,浅浅的记录一下 修改MAC地址 首先打…

MicroApp初探

微前端 微前端是一种类似于微服务的架构,它将微服务的理念应用于浏览器端,即将 Web 应用由单一的单体应用转变为多个小型前端应用聚合为一的应用。各个前端应用还可以独立运行、独立开发、独立部署。微前端架构与框架无关,每个微应用都可以使…

VMware虚拟机安装部署CentOS7+Moba远程连接+克隆(步骤)

使用VMware部署centos7操作系统 1. 打开VMware点击“创建新的虚拟机” 2.按提示逐步选择 选择NAT模式(只要电脑能联网,虚拟机就能联网) 磁盘存为单个文件 点击“使用iso映像文件”,选择已经下载好的镜像文件。 (虚…

火爆全网的ChatGPT对话数据可视化,分析数据可视化的应用和发展

ChatGPT为一款由OpenAI开发的人工智能聊天软件。2022年11月30日上映。截至2023年1月底,其月活跃用户超过1亿,是有史以来增长最快的消费应用。今年AIGC(是指利用人工智能技术来生成内容)频繁出圈,先是一个基于diffusion…

【转载】Visual Studio 下载进度很慢甚至不动怎么办?

原文链接:https://zhuanlan.zhihu.com/p/566305175 现在越来越多的人投身到计算机行业成为了一名码农,对于一个合格的码农来说能熟练的使用Visual Studio,Visual Studio code,idea等是很重要的,也有很多人在软件下载方面就遇到了难…

python【os模块文件读写操作】超详细

一、os 模块是什么:os 模块是python 标准库中整理文件和目录最为常用的模块,该模块提供了非常丰富的方法用来处理文档和目录二、认识文件路径分隔符:- 路径表示"\"在windows操作系统中表示区分文件的存储路径层级关系比如&#xff…