WebRTC简介(一)

WebRTC简介(一)

初识WebRTC

Webrtc是什么?

WebRTC(Web Real-Time Communication)也被称为网络实时通信,是由 Google、Mozilla 和其他公司推动的一个开源项目,它通过 Javascript API 实现无插件的实时通信,以及在不需要中介的情况下在浏览器之间交换任意数据。

WebRTC的优点:

  • 开源、免费,开发者不需要承担高昂的专利费用
  • 基于浏览器,不需要安装插件,只要调用就可以实现音视频互动
  • 被纳入了HTML5标准,主流浏览器全面支持WebRTC
  • 不仅支持Web之间的音视频通讯,还支持Android以及IOS端,由于该项目是开源的,我们也可以通过编译C++代码,从而达到全平台的互通

Webrtc诞生的原因?

WebRTC技术的诞生,有一个很重要的原因在于,在浏览器实现实时音视频通话,需要依赖相关插件或程序,而插件安全漏洞问题则更为关键。浏览器开发人员无法控制这些插件以及更新,因此插件带来的安全风险也相对较大。

例如,Adobe Flash一直以来以安全性问题闹了不少负面新闻,以至于史蒂夫·乔布斯写了一封公开信,详细说明了为何iOS从2010年就禁止了该插件。所以,Adobe于2015年停用了Flash,并宣布2020年终止服务。

WebRTC音视频传输是基于点对点传输的,实现简单的 1 对 1 通话场景,需要较少的服务器资源,借助免费的 STUN/TURN 服务器可以大大节约成本开销,到目前为止,几乎所有主要的浏览器都兼容WebRTC,包括谷歌Chrome、苹果Safari、Mozilla Firefox 、QQ浏览器、360浏览器和Microsoft Edge,除了IE浏览器外。

WebRTC 发展

在WebRTC诞生之前,开发实时音视频应用的成本是非常高,需要考虑的技术问题很多,如音视频的编解码,数据传输延时、丢包、网络抖动、回音处理和消除等,如果要兼容浏览器端的实时音视频通信,还需要额外安装插件。当然,可以考虑使用第三方成熟技术,比如当时世界顶级的互联网音视频方案GIPS(Global IP Solutions),支付相应的费用就行。很多知名的应用或者软件服务商也都在用GIPS,如Yahoo,AOL,IBM,SKYPE,QQ等。

  • 2011年,谷歌以6820万美元收购GIPS。而且,谷歌不光收购了GIPS,还收购了On2,得到了VPx系列视频编解码器。于是,WebRTC项目诞生,融合了GIPS的音视频引擎、VPx视频编解码器,P2P穿洞技术等,而且将WebRTC开源。
  • 经历了6年的时间,2017 年 11 月 2 日 ,W3C WebRTC 1.0 草案正式定稿,WebRTC加入W3C大家族。随后,各大浏览器厂商跟紧支持。根据全球领先的技术研究和咨询公司——Technavio的关于“全球网络实时通信(WebRTC)市场”的研究报显示,自2017-2021年期间,全球网络实时通信(WebRTC)市场,将以34.37%的年均复合增长率增长,可谓十分的迅速。
  • WebRTC在2021年1月被W3C和IETF发布为正式标准。

WebRTC项目的愿景:实时通信web化,让WebRTC成为互联网音视频实时通信的规范,让开发者基于此规范快速开发出安全、可靠的应用。未来的音视频实时通信,必定是现代化生产活动中极其重要的板块。以下是WebRTC的部分应用场景:

  • 云游戏
  • 物联网
  • 实时人脸识别
  • 音视频会议
  • 在线教育
  • 即时通讯工具
  • P2P网络加速
  • 共享远程桌面
  • 文件传输工具

WebRTC 原理

两个不同网络环境的(具备摄像头/麦克风多媒体设备的)客户端(浏览器或APP),要实现点对点的实时音视频对话,难点在哪里?

  • 双方的音视频编解码?
  • 如何发现对方?
  • 如何交换数据?

媒体协商

要实现P2P通信,首先需要了解彼此是否都支持相同的媒体能力,WebRTC默认使用V8编解码器,如果要连接的对方不支持V8解码,如果没有媒体协商过程。那么即使连接成功,把视频数据发给对方,对方也无法播放
比如:Peer-A端可支持VP8、H264多种编码格式,而Peer-B端支持VP9、H264,要保证二端都正确的编解码,最简单的办法就是取它们的交集H264
有一个专门的协议 ,称为Session Description Protocol (SDP),可用于描述上述这类信息,在WebRTC中,参与视频通讯的双方必须先交换SDP信息,这样双方才能知根知底,而交换SDP的过程,也称为"媒体协商"。

image-20211126194755366.png

交换数据

交换数据会通过一个中间服务来完成,在这里,我们称之为信令服务器
在建立P2P连接时,需要交换的信息有:

  • 媒体信息
  • 网络信息
  • 具体业务
  • 其它

最理想的场景

image-20211126194910012.png

然而,在大多数情况下,两个对等端都是各自处于某个局域网之中,相互之间隔着NAT与防火墙

image-20211126194947349.png

NAT简介

NAT(Network Address Translation)即为网路地址转换协议

  • 当在专用网内部的一些主机本来已经分配到了本地IP地址(即仅在本专用网内使用的专用地址),但现在又想和因特网上的主机通信(并不需要加密)时,可使用NAT方法
  • 这种方法需要在专用网连接到因特网的路由器上安装NAT软件。装有NAT软件的路由器叫做NAT路由器,它至少有一个有效的外部全球IP地址。这样,所有使用本地地址的主机在和外界通信时,都要在NAT路由器上将其本地地址转换成全球IP地址,才能和因特网连接
  • 这种通过使用少量的公有IP 地址代表较多的私有IP 地址的方式,将有助于减缓可用的IP地址空间的枯竭

局域网-->公网

image-20211126195112893.png

公网-->局域网

image-20211126195131204.png

网络协商

可以借助STUN服务器.,穿越NAT

那什么是STUN服务器呢?

STUN(Session Traversal Utilities for NAT,NAT会话穿越应用程序)是一种网络协议,它允许位于NAT(或多重NAT)后的客户端找出自己的公网地址(ip+port),查出自己位于哪种类型的NAT之后以及NAT为某一个本地端口所绑定的Internet端端口。
image-20211126195215589.png

在NAT四种主要类型中有三种是可以使用STUN穿透:完全圆锥型NAT、受限圆锥型NAT和端口受限圆锥型NAT。但大型公司网络中经常采用的对称型 NAT(又称为双向NAT)则不能使用STUN穿透,这类路由器会透过 NAT 布署所谓的「Symmetric NAT」限制。也就是说,路由器只会接受之前连线过的节点所建立的连线。

当NAT无法穿越时,就需要用到TURN技术。
TURN的全称为Traversal Using Relays around NAT,如果终端在NAT之后, 那么在特定的情景下,有可能使得终端无法和其对等端(peer)进行直接的通信,这时就需要公网的服务器作为一个中继,对来往的数据进行转发。 

加上TURN的场景
image-20211126195313456.png

可以点对点连接的情况与需要中转的情况(数据来源于Google)

image-20211126195335861.png

不过在国内大部分局域网无法穿越。

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容