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服務?