一、什么是穿透
两个WebRTC之间是采用端对端的流来进行数据交互的,也就是两个客户端直接进行连接,交互。
但是,两个客户端并不知道对方是谁?对方在哪儿?因为两个客户端之间还隔着一些屏障,这些屏障就是NAT(WebRTC基础知识体系构建-NAT)和防火墙。穿过这些屏障,并使用一种叫ICE的协议,使两端找到对方,并建立连接,就叫穿透。
二、穿透需要的条件
1、尝试建立连接的两端必须同时发送“穿透”数据包。所以必须都知道要建立的会话,以及对方的地址。穿透数据包只是
普通的IP数据包,发送此包的目的是确定是否可以通过NAT访问到对方的地址。
2、需要尽可能多的获知可用于访问对方的IP地址。这些地址可能是公共地址(NAT外部地址),私有地址(NAT内部地址)
和中继地址(TRUN服务器的地址),具体请参考(WebRTC基础知识体系构建-隐私设置)。
3、需要一个共有IP,作为两个端找不到对方可用IP时候的中继。
4、必须采用端到端流。
三、如何满足上述条件
1、通过服务器的协调,可以满足上述1的条件,服务器知道将在哪两个端(可以上通过服务器上的用户ID知道)间进行穿透,保证时间大体一致。
2、可以通过NAT(Session Traversal Uitilities fo NAT&