WebRTC 基礎 TURN的工作過程和原理

2021-10-25 03:04:05 字數 1622 閱讀 6687

我們在stun工作過程介紹的文章中提到過,stun能夠處理cone nat,但是沒有處理對稱nat的能力,也就是說位於對稱nat後面的2台內網機器是無法進行p2p連線的。

turn協議就是為了解決對稱nat的問題,它擴充套件了stun(所以說turn服務也會提供stun的功能), 新增了乙個中繼(relaying)的功能,使得位於對稱nat後面的2台內網機器能夠進行通訊。

需要注意的是,使用turn進行的通訊,本質上講它不是p2p,同時由於需要中繼資料,從而增加了turn伺服器的負擔。

下面將從資料的傳輸過程來了解turn是如何讓對稱nat後面的內網機器間進行通訊的。

先解釋乙個名詞,這樣有利於後面的描述:

反射位址(reflexive transport address): 它是nat分配給內網機器與外網進行通訊的公網ip和埠

環境:client a: 位於對稱nat後的內網機器, 192.168.10.2:1234

turn server: turn伺服器,位於公網, 112.11.11.11:3478

client b: 位於對稱nat後的內網機器, 192.168.10.2:4321

1. 準備中繼位址

要使得2個client能夠通訊,我們需要turn為我們準備乙個位於公網的中繼位址

1)client a 向turn伺服器傳送了allocate請求

2)伺服器根據請求為a分配了乙個位於公網的中繼位址

3)伺服器向a傳送響應,響應中包括中繼位址資訊

2. 資訊傳遞過程

上一步中client a已經拿到了turn為其分配的中繼位址,需要通過其他方式將這個中繼位址告訴其他想和a通訊的物件,例如client b。 當clientb拿到這個中繼位址後,就可以和a進行通訊了,過程如下:

上圖中所示,整個過程是b給a發了個hello訊息,然後a給b回了個hi,下面詳細分析下這個過程:

1. 藍色箭頭代表的是b的傳送資訊的過程, 綠色箭頭代表a回應b的資訊的過程。

2. 在編號為 1,2的兩個階段,傳送的是單純的udp資料, 而4,5兩個階段傳送是使用stun協議封裝過的「hello」,它被稱為data indication。

3. 同樣的, 在6,7階段被傳送的是被stun協議封裝過的「hi」,被稱為 send indication。 而9,10階段傳送的單純的包含hi的udp包。

4. 在4,5階段中,資料是從stun port**過來的,進行了stun封裝,目的是告訴a這些資料是誰發過來的,也就是包含了b的反射位址資訊

5. 在6,7階段中,對hi進行了封裝,也就是新增了目的地資訊(就是b的反射位址資訊),這樣turn才能知道把這個資料通過中繼位址發給誰。

6. 在階段3中,為資料「hello」進行turn封裝(主要是加入了b的反射位址)

7. 在階段8中,對被turn封裝的「hi」解封裝,獲取資料「hi」和目的位址,經由中繼埠發出

在上面的例子中,我們看到是b先發起的請求,那a怎麼先發起請求呢??

主動發起方必須獲取對方的中繼資訊後才能發起請求,也就意味著,如果a想主動發起,那邊b必須首先建立自己的中繼通道,然後通知a。

WebRTC基礎面試題

5 人贊同了該文章 面試同時,這份面試題也對你學習 webrtc入門 這門課的乙個檢驗。a.瀏覽器不支援 webrtc b.沒有使用 https 服務 c.證書不正確 d.沒有開啟瀏覽器許可權 a.當提供正式服務時必須用 https時,必須使用 https 服務 b.是的,google 就是要增加使...

WebRTC的優缺點

作為google開源的技術,webrtc並不是乙個可以拿來就用並且效能很好的產品,需要工程師們對其進行較多的改善。本文主要來談一談webrtc的優缺點。webrtc的優點 3.強大的打洞能力。webrtc技術包含了使用stun ice turn rtp over tcp的關鍵nat和防火牆穿透技術,...

簡單的WebRTC例子

home lang en b answer.html 作為answer home lang en text align center class videos container peer1 to peer2 autoplay controls demo用 postmessage傳遞資料,業務使用可...