在 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