1. 程式人生 > >stun、turn、ice介紹

stun、turn、ice介紹

在介紹stun、turn、ice前,不得不說一個很重要的東西:NAT。

NAT也是上面三個的基礎。

NAT模式

Network Address Translation,網路地址轉換。

網路分為內網和外網。有一個道理:內網可以訪問外網,但是外網並不能訪問內網。

而NAT的出現解決了這個問題,有了NAT的存在,外網也可以訪問內網(前提是內網需要先訪問外網)。

NAT包含四種類型:

1.Full Cone:

​ 內部機器A訪問外網機器C,NAT開啟一個埠,後面外網的任意ip和任意port都可以訪問這個埠,也就是任意ip+任意port可以訪問機器A

2.Address Restricted Cone:

​ 內部機器A訪問外網機器C,NAT開啟一個埠,後面機器C的任意port可以訪問這個埠,就是隻能固定ip+任意port訪問A

3.Port Restricted Cone

​ 內部機器A訪問外網機器C,NAT開啟一個埠,後面機器C的固定port可以訪問這個埠,就是隻能固定ip+固定port訪問A

4.Symmetric

​ 連線不同的外部Server,NAT開啟的埠會變化。也就是內部機器A連線外網機器B時,NAT會開啟一個埠,連線外網機器C時又會開啟另外一個埠。

有了這個前提,就可以解釋stub、turn、ice的原理了,他們都是通過NAT模式,內網訪問外網的機器,然後二者進行通訊。

STUN

STUN的全稱是Simple Traversal of UDP Through NAT,即UDP對NAT的簡單穿越方式。應用程式(即STUN CLIENT)向NAT外的STUN SERVER通過UDP傳送請求STUN 訊息詢問自身的轉換後地址。

根據瞭解到的地址,傳送給對端,然後對端請求這個地址,進行通訊。

在實際場景中有兩種形式:

1.內網機器A訪問stun伺服器C,通過C獲知自己的對外通訊的ip和port,然後通過信令伺服器告知機器B。B通過ip和port與A進行通訊。

2.內網機器A訪問stun伺服器C,直接和C進行通訊。(這個就是ice中的lite模式,也是webrtc中的prflx模式)

STUN協議最大的優點是無需現有NAT/FW裝置做任何改動,同時STUN方式可在多個NAT串聯的網路環境中使用. STUN的侷限性在於STUN並不適合支援TCP連線的穿越,同時STUN方式不支援對對稱NAT(Symmetric NAT).

TURN

TURN的全稱為Traversal Using RelayNAT,即通過Relay方式穿越NAT,TURN應用模型通過分配TURNServer的地址和埠作為客戶端對外的接受地址和埠,即私網使用者發出的報文都要經過TURNServer進行Relay轉發,這種方式除了具有STUN方式的優點外,還解決了STUN應用無法穿透對稱NAT(Symmetric NAT)以及類似的Firewall裝置的缺陷

ICE

ICE跟STUN和TURN不一樣,ICE不是一種協議,而是一個framework,它整合了STUN和TURN。