1、点对点连接建立的难点
对基于WebRTC的点对点信来说,第一步是建立连接。这个过程有点复杂,至少可能会遇到以下两个问题:
问题一:连接双方可能互相不知道对方的地址;
问题二:连接双方可能都位于私有网络当中,中间隔着NAT设备;
对于问题一,只要通过某种方式,让连接双方获取对方的地址(IP:PORT)即可,比如连接到公共的server来交换地址(非本文重点)。
问题二则稍微麻烦一些。对位于局域网中的设备来说,建立点对点连接至少会遇到3个问题:
连接双方可能位于同一个局域网,也可能位于不同的局域网;
连接双方不知道自己本身的公网地址;
连接双方内网地址、公网地址已知的情况下,不一定能够直接建立连接;
Client A <--> NAT A <--> NAT B <--> Client B
2、WebRTC的解决思路
点对点通信关键的一点,就是让双方直接建立连接。然而,在某些情况下,两台主机无法直接通信,此时,可以借助中间代理进行间接通信。这也是WebRTC所采用的思路。
直接通信:Client A <——————————————> Client B间接通信:Client A <——————代理 ——————> Client B
因为NAT带来的网络穿透问题,不管是直接通信,还是间接通信,都不是简单的事情。WebRTC通过ICE框架来解决网络穿透的问题,并对应用开发者屏蔽了复杂的技术细节。
ICE (Interactive Connectivity Establishment) ,交互式连接建立,是一种NAT穿透的框架&#x