WebRTC相关基础概念

版权声明:本文为博主原创文章,未经博主允许不得转载。 https://blog.csdn.net/qq_17338093/article/details/79180828
WebRTC(Web Real-Time Communication),一个可以让用户用自己流量实现音视频实时通信的框架(APIs),支持浏览器(Firefox、Chrome、Opera)以及iOS、Android 原生系统(Poor WP)。对于觉得带宽贼贵又需要实现用户之间音视频通信的公司来说,这是一个大大的福利;

当我们在使用WebRTC在给我们的项目做开发时,可以满足大多数用户的需求。WebRTC可以帮助我们节约大量的带宽流量费;


WebRTC应用->WebRTC api->捕捉摄像头和麦克风->处理音视频流->传输层->会话管理
编解码:
WebRTC内置的几种编码器包括:H264、Opus、ISAC、VP8;
传输:
传输层主要处理数据包丢失、排序以及建立用户链接等;
会话管理
信令:负责在浏览器中建立并管理多个链接;

发送信令的过程:
1:为一个对等连接创建潜在的候选列表;
2:用户或计算机算法将选择一个用户去连接;
3:信令层将通知那个用户有人想要连接他,用户可以选择接受或则拒绝;
4:当连接的请求被接受时,第一个用户会被通知;
5:若接受,第一个用户将初始化RTCpeerConnection;
6:双方将通过信令通道交换各自电脑硬件和软件信息;
7:交换各自的电脑位置信息;
8:连接建立成功或失败;


会话描述协议SDP
为了连接到用户,首先必须知道对方所支持的音视频编解码器,他们使用何种网络以及他们能处理多少数据等;
1:SDP的好处是一种久经考验的用于在客户端间建立基于媒体的连接方式;
2:SDP是由浏览器提供的基于字符串的二进制数据对象;这种字符串的形式是一系列键值对,由换行符分割<key=val>\n;
key是一个单字符,用来表明值的类型,val是由机器可读配置项组成的有结构的一组文本;
3:SDP涵盖了一个指定用户的描述、时间配置和对媒体的限制;


连接对方:
1:NAT会话穿透工具(STUN)
2:使用中继技术穿透NAT(TURN)
3:交互式连接建立

一:
连入互联网的设备 都有一个IP 。 当你的网络位于路由器之后时,路由器会隐藏你的IP地址并用其他的地址来替代,这是为了增强安全;
NAT 是什麼?
网络位置转换 (Network Address Translation,NAT)  可為你的裝置提供公用 IP 位址。路由器具備公用 IP 位址,而連上路由器的所有裝置則具備私有 IP 位址。接著針對請求,從裝置的私有 IP 對應到路由器的公用 IP 與專屬的通訊埠。如此一來,各個裝置不需佔用專屬的公用 IP,亦可在網路上被清楚識別。
即使透过STUN 服务器取得公用 IP 位址,也不一定能建立连接。某些路由器会限制我们连接这些设备。这种情况就必須使用 TURN。
[http://blog.csdn.net/qq_17338093 Arman]
STUN 是什麼?
会话传输应用程序(Session Traversal Utilities for NAT,STUN)
1:属于一种通讯协定,可找到你的公用位置,并判断你的路由器是否回连接上端点;
2:是双方建立连接的第一步,它有助于在互联网上识别对方,同时在创建对等连接时常被其他协议使用,首先发一个请求给服务器,以开启STUN协议,之后服务器识别发出请求的客户端的IP地址,并将其返回给客户端,客户端之后通过返回的IP地址来识别自己;


二:
在一些情况下防火墙限制,可能不允许任何基于STUN的访问( 「Symmetric NAT」限制),这种情况可能存在于企业级NAT中,它利用端口随机化来让数以千计的设备连接,你无法使用通用的方法找到用户,在这种情况下,就需要使用不同的方法来连接另一个用户,这个标准叫TURN;

TURN 是什麼?
Traversal USing Relays around NAT
工作原理就是代表客户端在对等连接的双方之间增加一个转播,从而绕过 Symmetric NAT 的限制 ,这就要求TURN服务器去下载、处理并重定向每一个用户发送过来的数据包,这个方法更耗时且更加占频宽, 因此在沒有其他替代方案時才會使用這個方法;

三:
ICE 是什么?
交互式连接建立(Interactive Connectivity Establishment,ICE)

把STUN和TURN结合在一起的一个标准叫ICE,这个过程利用STUN和TURN为对等连接提供正确的路由,寻找一系列双方可用的地址并按顺序测试每一个地址,直到找到一个双方都可用的组合;
没一个ICE候选路径都是通过STUN和TURN来找到的,通过查询STUN服务器来找到外部ip地址,并附上STUN服务器的地址,当连接失败时可用作备份,当浏览器找到一个新的候选路径时,通知客户端程序将使用信令信道来发送ICE候选路径,当足够多的地址被发现且通过验证,并且连接建立后,这个过程就结束了;

1:ICE是一种以UDP为基础用于实现穿越NAT网管或者防火墙的协议;
2:若peerA与peerB连接遇到阻挡开放连接的防火墙,可通过ice越过防火墙;
3:大多数情况下,装置都没有公用的ip地址,也能让ice提供专属位置;
4:如果路由无法直接连接上端点,同样ice能让中介服务器转发资料,ice会使用STUN和TURN功能达到相关功能;






猜你喜欢

转载自blog.csdn.net/qq_17338093/article/details/79180828