掌握 STUN 和 TURN 服务器:WebRTC 应用程序正确集成指南

在 WebRTC 看似无缝的体验背后,是一个复杂的服务器和协议网络,用于管理浏览器、本地应用程序和媒体服务器之间的实时点对点连接。建立和维护这些连接需要多个步骤,每个步骤对于可靠和高效的通信都至关重要。

在本篇文章中,我们将深入探讨这一基础架构的两个关键组件: STUN(Session Traversal Utilities for NAT,NAT会话穿越应用程序)和 TURN(Traversal Using Relays around NAT ,使用中继穿越NAT)服务器。我们将探讨它们的功能、运行方式,以及如何正确地将它们集成到 WebRTC 应用程序中,以确保顺畅、稳定的连接。

WebRTC 的点对点特性

WebRTC 支持两个或多个参与者之间的点对点实时通信。这样,Web浏览器、本地应用程序和媒体服务器就能直接交换媒体和任意数据。

要建立这种连接,对等方(peer)首先要参与一个称为信令的过程。通过信令,它们共享有关媒体格式和它们将使用的通信方法的信息。

在此过程中,它们交换 IP 地址并指定 TCP 或 UDP 端口,通过这些端口接收媒体和数据。这些地址和端口集被称为 ICE 候选者。

NAT 世界中的点对点

在理想世界中,每个对等方都有自己独特且可公开访问的地址,建立连接将会非常简单。

不幸的是,事实并非如此。对等方通常位于受到限制的私有网络后面。要与外界通信,它们必须执行称为网络地址转换 (NAT) 的过程。

NAT 允许网络中的多个设备共享一个可公开访问的 IP 地址,并使用不同的网络端口来区分它们。因此,对等设备会使用此类 IP 地址及其关联端口作为 ICE 候选。然而,在某些情况下,这并不总是足够的。

另一个选择是与外部服务器协商,当无法建立直接连接时,该服务器可以在对等体之间中继数据。然后,该服务器的 IP 地址将作为另一个 ICE 候选地址包含在内。

但是,对等端如何确定其公共 IP 地址?与中继服务器的通信如何进行?如果在连接期间网络条件发生变化,会发生什么情况?

这些挑战由交互式连接建立 (ICE) 协议管理。

ICE, STUN 和 TURN

ICE 协议不仅能建立对等方之间的连接,还能在网络条件发生变化时确保连接保持激活状态。

为了实现这一目标,该协议依赖于在信令过程中定义的一组服务器。这些服务器通常称为 ICE 服务器,即 STUN/TURN 服务器。

STUN 服务器向对等端提供其所在私有网络之外的身份。从本质上讲,STUN 服务器会显示对等方在 NAT 过程中分配的外部 IP 地址和端口。

另一方面,TURN 服务器代表对等方接收媒体并将其中继给他们。这通常发生在对等方位于受限网络(例如企业防火墙)后面或使用对称 NAT 时。

为您的 WebRTC 应用程序选择正确的 STUN/TURN 服务器

正在构建 WebRTC 应用程序并想知道如何正确集成 STUN 和 TURN 服务器?让我们消除困惑并指导您为您的项目做出最佳选择。

STUN 很简单——它几乎不花钱,而且通常与 TURN 服务器捆绑在一起。真正的决策(和成本)来自 TURN。

使用 TURN 托管服务

简要说明:除非有令人信服的理由,否则请选择托管 TURN 服务。Twilio 等公司提供的服务价格约为 0.400 美元/GB(根据地区而定)。相信我,考虑到你能得到的,这个价格已经很便宜了!

为什么使用托管服务有意义?

1. 简单

  • 集成只需数小时,无需数周。
  • 内置最佳实践。
  • 无需成为 TURN 服务器大师。

2. 按需付费

  • 按增长付费。
  • 无需前期基础设施成本。
  • 仅需为实际使用的内容付费(并非所有流量都需要 TURN)。

3. 开箱即用,全球覆盖

  • 多个地区?覆盖。
  • 扩展问题?这不是你的问题。
  • 极端情况?他们全都见过。

4. 面向未来

  • 想要更换供应商?没问题。
  • 以后需要自行托管吗?到时候再来吧。
  • 无需担心供应商锁定。

DIY 路线:自托管 TURN 服务器

我知道你们中的一些人已经开始撸起袖子,渴望建立自己的 TURN 基础设施。在深入研究之前,让我们先讨论一下什么时候这样做才有意义。

以下是应考虑自行托管的情况:

1. 规则游戏

  • 需要完整的数据主权吗?
  • 应对严格的隐私要求?
  • 在一个严格监管的行业工作?

那么是的,自托管可能是您唯一的选择。

2. 规模因素

  • 您每个月在 TURN 服务上花费数万美元吗?
  • 您的流量很大吗?
  • 已经拥有全球基础设施足迹?

从这个规模来看,构建自己的体系开始具有经济意义。

3. 网络控制狂(好的方面)

  • 需要特定的、定制的配置吗?
  • 正在运行专门的数据包加速?
  • 有特定的基础设施集成要求吗?

这些可能是进行 DIY 的正当理由。

4. 防火墙约束

  • 对 IP 范围要求严格的客户?
  • 现有的防火墙配置是否与您的基础设施相匹配?
  • 需要完全控制服务器寻址吗?

自托管可能会简化您的工作。

为您的 WebRTC 应用程序选择正确的 STUN/TURN 路径

集成 STUN 和 TURN 服务器是构建 WebRTC 应用程序的关键步骤。虽然 STUN 服务器相对简单,但 TURN 服务器由于相关成本而需要更多考虑。 

对于大多数用例,托管 TURN 服务是一种方便且经济高效的解决方案,具有易于集成、可扩展性和面向未来性的特点。但是,对于具有特定监管、扩展或网络控制要求的组织来说,自托管 TURN 服务器可能是必要的。 

作者:Hector Zelaya
译自:https://webrtc.ventures/2024/11/mastering-stun-turn-servers-a-guide-to-proper-integration-for-webrtc-applications/

本文来自作者投稿,版权归原作者所有。如需转载,请注明出处:https://www.nxrte.com/jishu/webrtc/53891.html

(1)

相关推荐

发表回复

登录后才能评论