AWS WebRTC:获取ICE服务地址(part 3):STUN服务和TURN服务的作用
STUN服务和TURN服务的作用:
服务 | 全称 | 作用 | 是否中继流量 | 适用场景 |
---|---|---|---|---|
STUN | Session Traversal Utilities for NAT | 协助设备发现自己的公网地址(srflx candidate) | ❌ 不中继,仅辅助 | NAT 穿透成功时使用 |
TURN | Traversal Using Relays around NAT | 提供中继服务器,帮助双方通信 | ✅ 会中继所有流量 | 直连失败时兜底方案 |
ICE 服务地址(ICE Server URLs)主要是 STUN 和 TURN 服务器的地址,用于 WebRTC 在 NAT 网络环境中协商建立连接。
STUN 服务的两个主要作用:
获取外网映射(服务器反射地址,即 srflx)
-
当设备在 NAT 后面(如家庭路由器)时,STUN 可以告诉客户端:
-
你在公网上的 IP 是什么
-
你的端口是 NAT 分配的哪个端口
-
-
这个过程通常用于生成 Server Reflexive Candidate(srflx)。
测试连通性(连接性检测)
-
在 ICE 流程中,ICE Agent 会向候选对(candidate pair)发送 STUN Binding Request。
-
收到 STUN Binding Response 说明该路径是可达的。
-
不仅测试了连通性,还用于 NAT 的打洞(NAT Traversal)。
补充说明:
-
虽然连接性检测使用的是 STUN 消息(Binding Request/Response),但它不一定必须经过 STUN 服务器。
-
比如 host ↔ host 时,直接点对点发 Binding Request。
-
只有在某些 NAT 情况下才需要借助 STUN 服务器。
-
TURN服务:
TURN(Traversal Using Relays around NAT)Server 是当直接 P2P(点对点)失败时,用来“转发”音视频数据的中继服务器,确保连接稳定可靠。
TURN 的工作原理:
-
客户端通过 ICE(Interactive Connectivity Establishment)协议 发现所有可用的连接方式(候选地址)。
-
优先尝试使用:
-
主机地址(Host)
-
STUN 地址(STUN Server 可用于 NAT 穿透)
-
-
如果上述方法失败,就使用 TURN Server 中继音视频流,TURN 会接收一个客户端的数据,并通过公网再发给另一个客户端。
客户端 A <---> TURN Server <---> 客户端 B
总结:
项目 | 内容 |
---|---|
名称含义 | TURN = Traversal Using Relays around NAT |
核心作用 | 在 P2P 无法建立时作为中继,保证通信成功 |
使用成本 | 高(中继流量,带宽占用大) |
必须存在? | 非必须,但可以提升可靠性 |
搭配使用 | 常与 STUN 服务器一起搭配使用 |
下一篇:AWS WebRTC:获取ICE服务地址(part 4):本地配置STUN服务