开发学院,分享开发教程和最新动态

​WebRTC 路由发现

WebRTC 路由发现


为了连接到另一个用户,您应该在自己的网络和其他用户的网络中找到一条清晰的路径。但是,大多数计算机主机都位于防火墙或NAT之后,以避免安全问题。目前有几种技术用于跟其他用户建立连接.


STUN (简单地用UDP穿透NAT)


TURN (使用中继穿透NAT)


ICE (交互式连通)


为了理解它们如何工作,让我们看看典型的WebRTC连接的布局.

typical_webrtc.jpg


首先是找出请求方的IP地址,但是,当您的IP地址位于网络路由器后面时,会出现一个问题。为了提高安全性并允许多个用户使用相同的IP地址,路由器会进行地址转换,即所谓的NAT技术。


STUN


STUN帮助识别每个用户并找到它们之间的路由。首先,它向STUN服务器发出请求。然后服务器发送客户端的IP地址。客户端现在可以使用此IP地址标识自己。


所以基本上有两个步骤

stun_model.jpg


要使用此协议,您需要连接到一个STUN服务器,Chrome和火狐默认为您提供了开箱即用的服务器。


对于生产环境中的应用程序,您需要部署自己的STUN和TURN服务器,供您的客户端使用。现在网上有几个开源的服务器软件可供选择。


TURN


有时候防火墙不允许任何基于STUN的数据传送给用户.例如在一些企业NAT中。TURN就是与其他用户建立连接的另一种方法。


TURN通过在客户端之间添加中继来工作,该中继代表用户充当点对点连接,接着,用户从转向服务器获取其数据,然后,转向服务器将获取并重定向到每个用户发送到它的每个数据包,这是别无选择时的最后一个办法。


turn_model.jpg


大多数时间用户不使用TURN会很好,在决定生产应用程序时,决定使用TURN服务器的成本是否值得。



ICE


ICE是通过综合运用上面几种协议,使之在最适合的情况下工作,以弥补单独使用其中任何一种所带来的固有缺陷。



当ICE开始时,它不知道每个用户的网络。ICE过程将逐步发现如何使用不同的技术设置每个客户端的网络。主要任务是查找有关每个网络的信息,以便成功连接。


ICE试着找最好的路径来让客户端建立连接,他会尝试所有可能的选项,然后选择最合适的方案,ICE首先尝试P2P连接,如果失败就会通过Turn服务器进行转接。