WebRTC 技术资料汇总指南

更新:11-13 民间故事 我要投稿 纠错 投诉

本篇文章给大家谈谈WebRTC 技术资料汇总指南,以及对应的知识点,文章可能有点长,但是希望大家可以阅读完,增长自己的知识,最重要的是希望对各位有所帮助,可以解决了您的问题,不要忘了收藏本站喔。

推荐的方式是打开官方的例子,然后通过浏览器调试,找到控件就可以看到进程了。 WebRTC 示例

如下:

什么是要约/应答和信号通道? WebRTC必须通过某种中间服务器建立连接,我们将这种介质称为“信号通道”。也就是说,在建立连接之前,会通过信号通道交换建立连接所需的信息。

我們所要交換的資訊就是「Offer」與「Answer」,而其內容就是上述的 SDP。当Peer A建立连接时,就会建立一个Offer。然后,该Offer 将通过选定的信号通道发送给Peer B。 Peer B 从信号通道收到Offer 后,会创建一个Answer,并通过相同的信号通道将Answer 发送回Peer A。

什么是ICE 候选人?如上所述,Offer/Answer 與 SDP 用以交換多媒體的格式內容;ICE candidate 則用以交換網路連線的建立方式,並可說明端點溝通的方法 (直接通訊,或透過 TURN 伺服器通訊)。

概述

一、WebRTC 直播时代

二、A Closer Look Into WebRTCwebkit添加新内容

相关

一、音视频云声网Agora:从demo到实用,中间还差1万个WebRTC

WebRtc协议栈

在此示例中,我们将使用SIP-over-WebSocket (SIPoWS) 作为信令堆栈。 HTTP协议用于浏览器下载HTML5/JavaScript程序内容; NAT堆栈解决P2P连接问题;媒体堆栈用于发送和接收RTC 音频和视频。

二、为什么要有打洞服务

IPv4使用相同的私有地址并使用相同的网段。内网地址不能使用,需要使用外网地址。当有防火墙和地址转换时,P2P需要UDP洞:经过NAT后,IP无法直接连接到WAN。并不是所有的NAT网络都能成功打洞,连接会建立失败,只能由服务器进行中转。

环境搭建

一、Webrtc服务器搭建

用于呼叫的房间服务器(Room Server) 用于呼叫的信令服务器(Signaling Server) 防火墙打孔服务器(STUN/TURN/ICE Server)

二、iOS下音视频通信-基于WebRTC非常全面的介绍,并且有Demo。大爱,跟着demo走一遍就熟了

严格来说它仅仅是不需要服务端来进行数据中转而已。WebRTC 至少有两项必须是用于服务器:

浏览器之间交换的元数据(信令)以建立通信必须经过服务器。

当A和B需要建立P2P连接时,我们至少需要服务器来协调和控制连接开始建立。当连接断开时,服务器还需要通知对方P2P连接已断开。我们用来控制连接状态的数据称为信令,连接到服务器的通道就是WebRTC的信令通道。在建立连接之前,显然无法在客户端之间传递数据。所以我们需要通过服务器的中转来在客户端之间传输这些数据,然后在客户端之间建立点对点的连接。但这些在WebRTC API中并没有实现,所以我们需要实现它们。以便穿越NAT和防火墙。

WebRTC主要实现了三个API

MediaStream:通过MediaStream API,您可以通过设备的摄像头和麦克风获取同步的视频和音频流。 RTCPeerConnection:RTCPeerConnection是WebRTC的一个组件,用于在点对点之间构建稳定高效的流媒体。 RTCDataChannel:RTCDataChannel 使浏览器(点对点)建立高吞吐量、低延迟的通道,用于传输任意数据。

其中,RTCPeerConnection是我们WebRTC的核心组件。在P2P连接过程中,A和B连接到服务器,建立TCP长连接(可以使用任何协议,WebSocket/MQTT/Socket native/XMPP)。为了省事,我们这里直接使用WebSocket,这样就有了信令通道。 A从ice服务器(STUN Server)获取ice候选并发送给Socket服务器,并生成包含会话描述(SDP)的offer并发送给Socket服务器。 Socket服务器将A的offer和ice候选转发给B,B会保存下A这些信息。然后B发送包含其自己的会话描述的应答(因为它收到的是offer,所以返回的是answer,但是内容都是SDP)和ice candidate给Socket服务端)。 Socket服务器把B的answer和ice候选给A,A保存B的这些信息。

三、WebRTC(iOS)下载编译(下载指定版本)

点对点连接下,会导致这样一个问题:

如果客户端A想给客户端B发送数据时,数据到达路由器时会被NAT拦截客户端B所在的位置,这样B就无法接收到A的数据。

但此时A的NAT已经知道B的地址,所以当B向A发送数据时,NAT不会阻塞,因此A可以接收B的数据。这就是我们NAT穿越的核心思想。

主意:

我们使用公共IP 服务器。 a和b都向公网IP/PORT发送数据包,公网服务器可以获知a和b的IP/PORT。由于a和b主动向公网IP服务器发送数据包,因此公网服务器可以穿透NAT A和NAT。 B 向a 和b 发送包。

所以只要公网IP将b的IP/PORT发给a,a的IP/PORT发给b。这样下次a和b互相消息,就不会被NAT阻拦了。

基础概念

一、WebRTC入门教程.md

STUN(Session Traversal Utilities for NAT)只能使用UDP,告诉我暴露在WAN上的地址IP端口,我通过映射的WAN地址进行P2P数据通信。 TURN(Traversal using Relays around for NAT)UDP或TCP,打洞失败后,提供服务器传输数据。通话双方的数据都经过服务器,占用了大量的服务器带宽——以保证通话在大多数环境下都能正常工作。服务器传输只能跨网络使用(测试中发现)。 TURN的使用占视频通话的10%。 ICE网络连接服务

二、WebRtc建立P2P链接的总体流程UML类图非常不错。

整体链接流程

时序图

类图

协议

一、NAT

NAT(网络地址转换)于1994年提出。当私有网络内的某些主机已分配了本地IP地址(即仅在该私有网络内使用的私有地址),但现在想要与主机上网(不加密),可以采用NAT的方法。这种通过使用少量的公有IP 地址代表较多的私有IP 地址的方式,将有助于减缓可用的IP地址空间的枯竭。NAT实现方式:静态转换Static Nat、动态转换Dynamic Nat及端口复用OverLoad NAT穿透方式:目前UDP常用的NAT穿透(NAT Traversal)方式主要有:STUN、TURN、ICE、uPnP等010 -59000 NAT穿透技术对于TCP来说还是有难度的。目前可用的实用技术仍然不多。 NAT工作原理:其中ICE方式由于其结合了STUN和TURN的特点,所以使用最为广泛。,IP地址验证在NAT过程中自动完成。有些应用程序将源IP地址嵌入到IP数据包的数据部分中,因此需要同时修改数据包的数据部分以匹配IP头中修改后的源IP地址。否则,在消息数据部分中嵌入IP 地址的应用程序将无法正常工作。NAT将自动修改IP报文的源IP地址和目的IP地址

二、STUN

是网络协议,简单来讲就是通过一个转换头,将内网地址变为公网地址,接收的时候根据记录将公网地址变成内网,完成传输。。目的是找到将内部地址连接到外部世界所需的信息。

STUN 是一种客户端-服务器协议。 VoIP 电话或软件包可能包括STUN 客户端。该客户端将向STUN 服务器发送请求,然后上面的它一种网络协议,它允许位于NAT(或多重NAT)后的客户端找出自己的公网地址,查出自己位于哪种类型的NAT之后以及NAT为某一 个本地端口所绑定的Internet端端口。这些信息被用来在两个同时处于NAT 路由器之后的主机之间建立UDP通信。响应也允许STUN 客户端确定正在使用的NAT 类型——,因为不同的NAT 类型处理传入的UDP 数据包不同。四种主要类型中的三种可用:全锥型NAT、受限锥型NAT 和端口受限锥型NAT ——。但是,无法使用大型企业网络中常用的对称NAT(也称为双向NAT)。

三、STUN和TURN技术浅析比较全面的分析

STUN(Simple Traversal of User Datagram Protocol Through Network Address Translators),简单地使用UDP来穿透NAT,是一种轻量级协议。服务器就会向STUN客户端报告NAT路由器的公网IP地址以及NAT为允许传入流量传回内网而开 通的端口。它允许应用程序发现它们与公共互联网之间存在的NAT。以及防火墙和其他类型。它还允许应用程序确定NAT 分配给它们的公共IP 地址和端口号。 STUN 是客户端/服务器协议和请求/响应协议。默认端口号为3478。

在真实的Internet网络环境中,大多数计算机主机都位于防火墙或NAT后面,只有少数主机可以直接访问Internet。很多时候,使用是基于UDP的完整的穿透NAT的解决方案。而不是中继到其他公共服务器。由于主机可能位于防火墙或NAT 后面,因此在发生P2P 通信之前,我们需要检测它们之间是否以及如何发生P2P 通信。这种技术通常称为NAT 穿越。最常见的NAT穿越是基于UDP的技术,例如RFC3489中定义的STUN协议。

NAT对待UDP有四种方式,可以简单理解为:

你可以随意做。那些以前从未做过的人也可以做到。只有以前做过的人才能做到。曾经戴过安全套的人都可以做到。只有那些感觉舒服的人才能进行TURN。它首先在RFC5766 中定义。英文全称是Traversal Using Relays around NAT:Relay Extensions to Session Traversal Utilities for NAT,我们希望网络中的两台主机能够直接进行通信,即所谓的P2P通信简单来说,TURN 和STURN 的共同点就是通过修改应用程序中的私网地址来达到NAT 穿透的效果层。相同点和不同点是即使用中继穿透NAT:STUN的扩展。

如果主机位于NAT 之后,在某些情况下,它将无法与其他主机建立直接的点对点连接。在这些情况下,就需要使用中间网点提供的中继连接服务。 TURN协议用于允许主机控制中继的操作并使用中继与对端交换数据。 TURN 与其他中继控制协议的不同之处在于,它允许客户端使用中继地址连接到多个对等点。

四、WebRTC protocols

五、SDP 协议分析

SDP 完全是一种会话描述格式- 它不是一种传输协议- 它只是使用不同的适当传输协议,包括会话公告协议(SAP)、会话发起协议(SIP)、实时流协议( RTSP)、电子邮件的MIME 扩展和超文本传输协议(HTTP)。 SDP协议也是一种基于文本的协议,这保证了协议的可扩展性比较强,这使得它有广泛的应用。 SDP不支持会话内容或媒体编码的协商,因此仅用于描述流媒体中的媒体信息。

用户评论

鹿先森,教魔方

终于找到一些关于 WebRTC 的学习资源了!

    有20位网友表示赞同!

生命一旅程

这个整理看起来很全面的样子,正好可以帮助我入门 WebRTC。

    有18位网友表示赞同!

微信名字

感谢整理者分享这些宝贵资料,真是太棒了!

    有18位网友表示赞同!

温柔腔

期待通过这些学习资料掌握 WebRTC 的知识。

    有10位网友表示赞同!

情字何解ヘ

感觉需要好好学习一下 WebRTC 技术,看看能不能应用到项目中。

    有6位网友表示赞同!

此刻不是了i

之前对 WebRTC 很模糊的印象,现在可以从这个整理开始认真了解它。

    有7位网友表示赞同!

非想

希望这些资料质量高,能让我快速入门 WebRTC 开发。

    有16位网友表示赞同!

微信名字

WebRTC 的应用场景很多,整理里有没涉及我感兴趣的领域呢?

    有8位网友表示赞同!

挽手余生ら

学习 WebRTC 可以扩展自己的技术能力,这份整理真是太及时了!

    有14位网友表示赞同!

我的黑色迷你裙

这个标题听起来很专业,内容应该很值得参考。

    有5位网友表示赞同!

白恍

我想学习一下WebRTC,这篇文章能帮我解决很多困惑吧?

    有17位网友表示赞同!

屌国女农

分享这种有用的资料对开发者来说很有帮助,我很感谢作者的努力!

    有9位网友表示赞同!

红尘滚滚

打算把这段时间用来学习 WebRTC,这份整理正好可以作为我的指南。

    有15位网友表示赞同!

弃我者亡

希望能通过这个整理了解到关于 WebRTC 的最新进展和趋势。

    有10位网友表示赞同!

哭花了素颜

最近在研究实时通信技术,WebRTC 应该是个不错的方向,我需要好好看看这份整理。

    有11位网友表示赞同!

一个人的荒凉

学习新知识是每天都要坚持的,今天就来学习一下 WebRTC 吧!

    有13位网友表示赞同!

殃樾晨

WebRTC 的普及率越来越高了,掌握它确实很有实用价值。

    有10位网友表示赞同!

不识爱人心

这份整理能帮我快速入门 WebRTC ,我可以更好地理解它的功能和应用。

    有15位网友表示赞同!

我一个人

感觉这个标题很吸引人,很想了解一下里面有哪些精彩内容?

    有10位网友表示赞同!

青袂婉约

学习新技能,WebRTC 是个不错的选择!看看到这份资料能给我带来什么启发?

    有11位网友表示赞同!

【WebRTC 技术资料汇总指南】相关文章:

1.蛤蟆讨媳妇【哈尼族民间故事】

2.米颠拜石

3.王羲之临池学书

4.清代敢于创新的“浓墨宰相”——刘墉

5.“巧取豪夺”的由来--米芾逸事

6.荒唐洁癖 惜砚如身(米芾逸事)

7.拜石为兄--米芾逸事

8.郑板桥轶事十则

9.王献之被公主抢亲后的悲惨人生

10.史上真实张三丰:在棺材中竟神奇复活

上一篇:揭秘深圳高仿市场:10大热门购买渠道大盘点 下一篇:高效编程挑战:LeetCode算法实战指南