纯净、安全、绿色的下载网站

首页|软件分类|下载排行|最新软件|IT学院

当前位置:首页IT学院IT技术

IOS WebRTC的实现原理 详解IOS WebRTC的实现原理

为童沉沦   2021-06-07 我要评论
想了解详解IOS WebRTC的实现原理的相关内容吗为童沉沦在本文为您仔细讲解IOS WebRTC的实现原理的相关知识和一些Code实例欢迎阅读和指正我们先划重点:IOS,WebRTC下面大家一起来学习吧

概述

它在2011年5月开放了工程的源代码在行业内得到了广泛的支持和应用成为下一代视频通话的标准

WebRTC的音视频通信是基于P2P那么什么是P2P呢?

它是点对点连接的英文缩写

P2P连接模式

一般我们传统的连接方式都是以服务器为中介的模式:

类似http协议:客户端?服务端(当然这里服务端返回的箭头仅仅代表返回请求数据)

我们在进行即时通讯时进行文字、图片、录音等传输的时候:客户端A?服务器?客户端B

而点对点的连接恰恰数据通道一旦形成中间是不经过服务端的数据直接从一个客户端流向另一个客户端:

客户端A?客户端B ... 客户端A?客户端C ...(可以无数个客户端之间互联)

这里可以想想音视频通话的应用场景我们服务端确实是没必要去获取两者通信的数据而且这样做有一个最大的一个优点就是大大的减轻了服务端的压力

而WebRTC就是这样一个基于P2P的音视频通信技术

WebRTC的服务器与信令

讲到这里可能大家觉得WebRTC就不需要服务端了么?这是显然是错误的认识严格来说它仅仅是不需要服务端来进行数据中转而已

WebRTC提供了浏览器到浏览器(点对点)之间的通信但并不意味着WebRTC不需要服务器暂且不说基于服务器的一些扩展业务WebRTC至少有两件事必须要用到服务器:

  • 浏览器之间交换建立通信的元数据(信令)必须通过服务器
  • 为了穿越NAT和防火墙

第1条很好理解我们在A和B需要建立P2P连接的时候至少要服务器来协调来控制连接开始建立而连接断开的时候也需要服务器来告知另一端P2P连接已断开这些我们用来控制连接的状态的数据称之为信令而这个与服务端连接的通道对于WebRTC而言就是信令通道

图中signalling就是往服务端发送信令然后底层调用WebRTCWebRTC通过服务端得到的信令得知通信对方的基本信息从而实现虚线部分Media通信连接

当然信令能做的事还有很多这里大概列了一下:

  • 用来控制通信开启或者关闭的连接控制消息
  • 发生错误时用来彼此告知的消息
  • 媒体流元数据比如像解码器、解码器的配置、带宽、媒体类型等等
  • 用来建立安全连接的关键数据
  • 外界所看到的的网络上的数据比如IP地址、端口等

在建立连接之前客户端之间显然没有办法传递数据所以我们需要通过服务器的中转在客户端之间传递这些数据然后建立客户端之间的点对点连接但是WebRTC API中并没有实现这些这些就需要我们来实现了

而第2条中的NAT这个概念参考文章iOS即时通讯从入门到“放弃”?中也提到过不过是为了应对NAT超时所造成的TCP连接中断在这里我们就不展开去讲了感兴趣的可以看看:NAT百科

这里我简要说明一下NAT技术的出现其实就是为了解决IPV4下的IP地址匮乏举例来说就是通常我们处在一个路由器之下而路由器分配给我们的地址通常为192.168.0.1 、192.168.0.2如果有n个设备可能分配到192.168.0.n而这个IP地址显然只是一个内网的IP地址这样一个路由器的公网地址对应了n个内网的地址通过这种使用少量的公有IP 地址代表较多的私有IP 地址的方式将有助于减缓可用的IP地址空间的枯竭

但是这也带来了一系列的问题例如这里点对点连接下会导致这样一个问题:

如果客户端A想给客户端B发送数据则数据来到客户端B所在的路由器下会被NAT阻拦这样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的NAT/防火墙穿越技术

基于上述的一个思路来实现的:

建立点对点信道的一个常见问题就是NAT穿越技术在处于使用了NAT设备的私有TCP/IP网络中的主机之间需要建立连接时需要使用NAT穿越技术以往在VoIP领域经常会遇到这个问题目前已经有很多NAT穿越技术但没有一项是完美的因为NAT的行为是非标准化的这些技术中大多使用了一个公共服务器这个服务使用了一个从全球任何地方都能访问得到的IP地址在RTCPeeConnection中使用ICE框架来保证RTCPeerConnection能实现NAT穿越

这里提到了ICE协议框架它大约是由以下几个技术和协议组成的:STUN、NAT、TURN、SDP这些协议技术帮助ICE共同实现了NAT/防火墙穿越


相关文章

猜您喜欢

网友评论

Copyright 2020 www.fresh-weather.com 【世纪下载站】 版权所有 软件发布

声明:所有软件和文章来自软件开发商或者作者 如有异议 请与本站联系 点此查看联系方式