首页 > 其他分享 >认识webRTC

认识webRTC

时间:2024-12-30 14:59:12浏览次数:1  
标签:候选者 SDP Offer 认识 应用程序 WebRTC ICE webRTC

什么是 WebRTC

2010 年 5 月,谷歌收购了 Global IP Solutions(简称 GIPS),这是一家专注于 VoIP 和视频会议软件的公司,已开发出 RTC 所需的多项关键组件,如编解码器和回声消除技术。谷歌随后将 GIPS 技术开源,并与 IETF 和 W3C 等标准机构合作,以确保行业共识。2011 年 5 月,谷歌发布了一个名为 WebRTC 的开源项目,旨在实现基于浏览器的实时通信。 它于2011年6月1日开源并在Google、Mozilla、Opera支持下被纳入万维网联盟的W3C推荐标准。此后,相关协议在 IETF 的标准化工作以及浏览器 API 在 W3C 的标准化工作持续进行。

WebRTC,名称源自网页即时通信(英语:Web Real-Time Communication)的缩写,是一个支持浏览器或移动应用程序(安卓苹果)进行实时点对点的音频、视频和数据通信的开放标准 API。

WebRTC 的独特之处在于,一旦连接建立,数据便可以直接在浏览器之间实时传输,无需经过服务器。通过绕过服务器,减少了延迟,因为数据不必先发送到服务器,这使得 WebRTC 非常适合用于音频和视频的交换。

WebRTC 如今已嵌入所有现代浏览器中,开发者可以利用 WebRTC 的 JavaScript API 为浏览器用户构建应用程序。当然 WebRTC 现在也被很多编程语言所支持,包括但不限于 C、C++、Go、Java、PHP、JavaScript 等等,因此可以实现跨平台的实时通信方案。

WebRTC 的工作流程

image

WebRTC 的工作流程比 Websocket、HTTP 协议来说相对复杂一些,它用到了很多个协议一起协同工作。

假设有两个对等方,A和B,他们使用WebRTC进行双向媒体流传输(例如,视频聊天应用)。当A想要呼叫B时,具体流程如下:

生成SDP Offer:A的应用程序首先需要生成一个SDP Offer。SDP(Session Description Protocol)Offer包含了A应用程序想要建立的会话信息,例如使用的编解码器类型、这是音频还是视频会话等内容。SDP Offer不包括ICE候选,而仅包含会话描述信息。
收集ICE候选者:在生成SDP Offer后,A的应用程序会开始收集ICE候选者。为了收集候选者,A的应用程序会向STUN服务器发送请求。STUN服务器返回A的公共IP地址和端口,A的应用程序将这些信息作为候选者添加到ICE候选者列表中。A的应用程序也会收集本地网络的候选信息(如本地IP/端口对)。这些候选者是为了后续的连接性检查。
通过信令通道传递SDP Offer:A生成了SDP Offer和相应的ICE候选者列表后,会通过一个信令通道(如HTTPS、WebSocket等)将SDP Offer传递给B的应用程序。需要注意的是,ICE候选者可以在这一步通过信令通道单独传递,通常是在SDP Offer之后或者与Offer一起传输。
生成SDP Answer:B的应用程序接收到SDP Offer后,进行以下处理:
B的应用程序会生成一个SDP Answer,作为对SDP Offer的回应。
同时,B的应用程序会收集自己的ICE候选者。类似于A的做法,B会向STUN服务器发出请求并收集公共IP地址/端口,形成自己的候选者列表。
通过信令通道传递SDP Answer和ICE候选者:B的应用程序将SDP Answer和自己的ICE候选者列表通过信令通道传递给A的应用程序。
连接性检查和媒体传输:在双方互相交换SDP Offer和Answer后,每个应用程序会开始连接性检查。双方应用程序的ICE协议会使用对方提供的候选IP/端口对,发送STUN请求进行连接性验证。如果请求得到了响应,相关的候选者会被认为是有效的,并标记为可用。
选择最终的IP/端口对:经过一系列的连接性检查后,A和B将协商并选择一个有效的IP/端口对,用于实际的媒体流传输。
使用TURN服务器(如有必要):如果任何一方的应用程序无法找到一个有效的IP/端口对,则会向TURN服务器发送请求,以获取一个公共的中继地址。TURN服务器返回的中继地址将会用于建立连接,并通过信令通道进行交换。
下方是一个直观的通信过程:

image

整个 WebRTC 通信过程中会用到如下的服务器:

信令(Signaling)服务器:用于交换信令信息,WebRTC 没有规定交换信令的方式,一般可用的交换方式是 HTTP、Websocket、MQTT 等等。
STUN 服务器:帮助客户端发现它们的公共IP地址和NAT类型,并为点对点连接提供网络信息。
TURN 服务器(可选):在STUN无法穿透NAT或防火墙时,作为中继服务器转发数据流。TURN服务器提供了一种备用机制,确保即使在极为复杂的网络环境下,WebRTC的点对点连接也能够顺利进行。

标签:候选者,SDP,Offer,认识,应用程序,WebRTC,ICE,webRTC
From: https://www.cnblogs.com/idealy/p/18641248

相关文章

  • 十道OJ题帮你深入认识链表
    好了,之前我们写过单链表的文章,现在我们就通过OJ题的分析,对链表的认识更加充分! 题目一:删除链表中等于给定值val的所有节点203.移除链表元素-力扣(LeetCode)代码:structListNode*removeElements(structListNode*head,intval){structListNode*cur=head;......
  • 认识macOS系统M1入门级芯片(含有英文版)
    苹果电脑M1芯片全面解析M1是苹果公司在2020年推出的首款自研芯片,它的出现标志着苹果在电脑芯片领域的重大突破1。以下是对苹果电脑M1的详细介绍:技术规格制程工艺:采用5纳米制程工艺,这使得芯片能够在更小的尺寸内集成更多的晶体管,从而提高性能和能效。相比之下,当时英......
  • 01 _ 认识容器:容器的基本操作和实现原理
    01_认识容器:容器的基本操作和实现原理你好,我是程远。作为一名工程师,我猜在过去的几年时间里,你肯定用过或者听人提起过容器(Container)。说实话,容器这东西一点都不复杂,如果你只是想用的话,那跟着Docker官网的说明,应该十来分钟就能搞定。简单来说,它就是个小工具,可以把你想跑的......
  • 01 _ 认识容器:容器的基本操作和实现原理
    01_认识容器:容器的基本操作和实现原理你好,我是程远。作为一名工程师,我猜在过去的几年时间里,你肯定用过或者听人提起过容器(Container)。说实话,容器这东西一点都不复杂,如果你只是想用的话,那跟着Docker官网的说明,应该十来分钟就能搞定。简单来说,它就是个小工具,可以把你想跑的......
  • 香港机器租用与托管,带你认识和了解他们之间的区别
    在构建或扩展网络应用时,选择合适的服务器解决方案至关重要。香港机房作为亚洲的数据中心枢纽,因其地理位置优越、高速网络连接和高可靠性而备受青睐。然而,面对租用和托管两种主要的服务模式,如何做出最适合的选择?小编将详细探讨香港机房租用与托管的优缺点,帮助读者做出明智的决策......
  • (一)认识Event Recoder
    目录一、不同领域EventRecoder的含义1.汽车领域2.嵌入式软件开发领域3.WebSphere4.航空领域二、结束语一、不同领域EventRecoder的含义1.汽车领域功能与作用        汽车EDR主要用于记录车辆在行驶过程中尤其是事故发生前后的关键数据,如碰撞前几秒内......
  • Java从认识到了解
    这里先介绍一下Java,Java是一种面向对象的编程语言,笔者认识和了解的第一个编程语言是C语言,这里就以C语言和Java的区别谈一谈对Java的认识和了解。认识和了解是感知事物的两个层面,显然,对于编程语言来说,认识和了解相对于熟悉和精通又是两个级别,笔者只停留在认识和了解的两个层面,......
  • 沙箱安全机制以及双亲委派机制的认识
    沙箱安全机制以及双亲委派机制的认识文章目录沙箱安全机制以及双亲委派机制的认识前言一、类加载器二、双亲委派机制类加载过程:总结面试题补充3.沙箱安全机制总结总结前言对于jvm,类的加载机制是通过双亲委派机制实现的,而沙箱安全机制可以保护Java代码对本地操......
  • 从0开始学uniapp——认识HBuilderX
    为什么使用uniapp:可以多端运行,写好了这一套可以用在h5,安卓程序,小程序多端,很方便。 1.百度搜HBuilderX,使用该编译器学习uniapp2.新建一个默认项目pages——用于存放页面,这里都是.vue后缀的页面,pages.json——用于存放路由pages数组里按例子添加即可, HBuilderX提供一个很方......
  • WebRTC服务质量(08)- 重传机制(05) RTX机制
    WebRTC服务质量(01)-Qos概述WebRTC服务质量(02)-RTP协议WebRTC服务质量(03)-RTCP协议WebRTC服务质量(04)-重传机制(01)RTXNACK概述WebRTC服务质量(05)-重传机制(02)NACK判断丢包WebRTC服务质量(06)-重传机制(03)NACK找到真正的丢包WebRTC服务质量(07)-重传机制(04)接收NACK......