WebRTC - 路由查找



为了连接到另一个用户,您应该找到绕过您自己网络和另一个用户网络的清晰路径。但是,您使用的网络可能存在多个级别的访问控制,以避免安全问题。有多种技术用于查找与另一个用户的清晰路径:

  • STUN(用于 NAT 的会话穿越实用程序)
  • TURN(使用 NAT 周围的中继进行穿越)
  • ICE(交互式连接建立)

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

Typical WebRTC

第一步是找出您自己的 IP 地址。但是,当您的 IP 地址位于网络路由器之后时,就会出现问题。为了提高安全性并允许多个用户使用相同的 IP 地址,路由器会隐藏您自己的网络地址并将其替换为另一个地址。当您在您自己和公共网络之间有多个 IP 地址时,这是一种常见情况。

STUN

STUN 有助于识别每个用户并在它们之间找到良好的连接。首先,它向启用 STUN 协议的服务器发出请求。然后,服务器会发送回客户端的 IP 地址。客户端现在可以使用此 IP 地址来识别自身。

因此,基本上有两个步骤:

STUN Model

要使用此协议,您需要连接到启用 STUN 的服务器。好消息是 Chrome 和 Firefox 为您提供了开箱即用的默认服务器来测试。

对于在生产环境中的应用,您需要部署您自己的 STUN 和 TURN 服务器供您的客户端使用。目前有几项提供此服务的开源服务。

TURN

有时防火墙不允许任何基于 STUN 的流量到达另一个用户。例如,在某些企业 NAT 中。这就是 TURN 作为连接另一个用户不同方法出现的地方。

TURN 的工作原理是在客户端之间添加一个中继。此中继代表用户充当对等连接。然后,用户从 TURN 服务器获取其数据。然后,TURN 服务器将获取并重定向为每个用户发送的每个数据包。这就是为什么它是没有替代方案时的最后手段。

TURN Model

大多数情况下,用户无需 TURN 即可正常工作。在设置生产应用程序时,最好确定使用 TURN 服务器的成本是否值得。

ICE

现在我们可以了解 STUN 和 TURN 如何通过 ICE 集成在一起。它利用 STUN 和 TURN 来提供成功的对等连接。ICE 查找并按排序顺序测试一系列对两个用户都有效的地址。

当 ICE 开始时,它对每个用户的网络一无所知。ICE 的过程将逐步经历一系列阶段,以使用不同的技术来发现每个客户端的网络设置方式。主要任务是找出有关每个网络的足够信息,以便建立成功的连接。

STUN 和 TURN 用于查找每个 ICE 候选。ICE 将使用 STUN 服务器查找外部 IP。如果连接失败,它将尝试使用 TURN 服务器。当浏览器找到新的 ICE 候选时,它会将此信息通知客户端应用程序。然后,应用程序通过信令通道发送 ICE 候选。找到并测试足够的地址后,连接即建立。

webrtc_environment.htm
广告