上一篇介紹完中心化、去中心化、分佈式網路以及 IPv4、NAT、NAT 類型,但我們依舊還有些問題未解決
STUN(Session Traversal Utilities for NAT,NAT 對談穿越應用程式)是一種網路協定,它允許位於 NAT(或多重 NAT)後的客戶端找出自己的公網位址,查出自己位於哪種類型的 NAT 之後以及 NAT 為某一個本地埠所繫結的 Internet 端埠。這些資訊被用來在兩個同時處於 NAT 路由器之後的主機之間建立 UDP 通信。該協定由 RFC 5389 定義。
TURN(全名 Traversal Using Relay NAT),是一種資料傳輸協定(data-transfer protocol)。允許在 TCP 或 UDP 的連線上跨越 NAT 或防火牆。
TURN 是一個 client-server 協定。TURN 的 NAT 穿透方法與 STUN 類似,都是通過取得應用層中的公有位址達到 NAT 穿透。但實現 TURN client 的終端必須在通訊開始前與 TURN server 進行互動,並要求 TURN server 產生"relay port",也就是 relayed-transport-address。這時 TURN server 會建立 peer,即遠端端點(remote endpoints),開始進行中繼(relay)的動作,TURN client 利用 relay port 將資料傳送至 peer,再由 peer 轉傳到另一方的 TURN client。
當無法打通 NAT 時,就會需要用 TURN 的方式來解決 NAT 穿透
ICE(Interactive Connectivity Establishment),一種綜合性的 NAT 穿越的技術。
互動式連接建立是由 IETF 的 MMUSIC 工作組開發出來的一種 framework,可整合各種 NAT 穿透技術,如 STUN、TURN(Traversal Using Relay NAT,中繼 NAT 實現的穿透)、RSIP(Realm Specific IP,特定域 IP)等。該 framework 可以讓 SIP 的客戶端利用各種 NAT 穿透方式打穿遠程的防火牆。
簡單來說
這篇介紹了 STUN、TURN 及 ICE,下一篇將介紹 Signaling Server, WebRTC 以及 AWS KVS for WebRTC.