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服务