WebRTC中NAT穿透淺析

來源:互聯網
上載者:User

標籤:用戶端   ice   ...   blank   target   協議   平台   技術   安全   

說NAT穿透之前先說幾個關於WebRTC的概念,可能之前有跟作者一樣對WebRTC概念理解錯誤的同學。。WebRTC(網路即時通訊)它是一個支援網頁瀏覽器進行即時語音對話或視訊交談的技術,它為我們提供了視頻會議的核心技術,包括音視頻的採集、編解碼、網路傳輸、顯示等功能,並且還支援跨平台:windows,linux,mac,android,iOS。1、WebRTC的實現原理webRTC是基於P2P的網路通訊,可能有同學不太瞭解P2P是什麼,在此簡單解釋一下 P2P就是點對點的通訊。下面就拿P2P與傳統串連方式做個比較:一般我們傳統的串連方式,都是以伺服器為中介的模式:
  • 類似http協議:用戶端?服務端(當然這裡服務端返回的箭頭僅僅代表返回請求資料)。
  • 我們在進行即時通訊時,進行文字、圖片、錄音等傳輸的時候:用戶端A?伺服器?用戶端B。
而點對點的串連恰恰資料通道一旦形成,中間是不經過服務端的,資料直接從一個用戶端流向另一個用戶端:用戶端A?用戶端B ... 用戶端A?用戶端C ...(可以無數個用戶端之間互聯。採用P2P的優點:可以大大的減輕了伺服器的壓力,我們服務端確實是沒必要去擷取兩者通訊的資料。說到這,大家認為WebRTC真的就不需要服務端了嗎?這是其中的一個誤解,嚴格意義上來說,webRTC僅僅是不需要伺服器中轉資料。起碼有兩件事是必須要用到伺服器1.瀏覽器之間交換中繼資料(信令)必須通過伺服器2.為了穿越NAT和防火牆第1條很好理解,我們在A和B需要建立P2P串連的時候,至少要伺服器來協調,來控制串連開始建立。而串連斷開的時候,也需要伺服器來告知另一端P2P串連已斷開。 這些我們用來控制串連的狀態的資料稱之為信令,而這個與服務端串連的通道,對於WebRTC而言就是信令通道

如所示,完整的P2P串連就是首先向伺服器發送Signaling信令,然後底層調用WebRTC從伺服器擷取信令,從信令中擷取對端使用者的基本資料,然後再進行Media通訊串連。2.NAT相關概念及原理NAT(Network Address Translation,網路位址轉譯)簡單來說就是為瞭解決IPV4下的IP地址匱乏而出現的一種技術。舉例??,就是通常我們處在一個路由器之下,而路由器分配給我們的地址通常為191.168.0.21 、191.168.0.22如果有n個裝置,可能分配到192.168.0.n,而這個IP地址顯然只是一個內網的IP地址,這樣一個路由器的公網地址對應了n個內網的地址,通過這種使用少量的公有IP 位址代表較多的私人IP 位址的方式,將有助於減緩可用的IP地址空間的枯竭。NAT技術會保護內網地址的安全性,所以這就會引發個問題,就是當我採用P2P之中串連方式的時候,NAT會阻止外網地址的訪問,這時我們就得採用NAT穿透了。於是我們就有了如下的思路:
我們藉助一個公網IP伺服器,a,b都往公網IP/PORT發包,公網伺服器就可以獲知a,b的IP/PORT,又由於a,b主動給公網IP伺服器發包,所以公網伺服器可以穿透NAT A,NAT B送包給a,b。
所以只要公網IP將b的IP/PORT發給a,a的IP/PORT發給b。這樣下次a和b互相訊息,就不會被NAT阻攔了。

WebRTC的NAT/防火牆穿越技術,就是基於上述的一個思路來實現的。在WebRTC中採用ICE架構來保證RTCPeerConnection能實現NAT穿越。關於ICE協議架構,作者提供串連地址:https://developer.mozilla.org/zh-CN/docs/Web/API/WebRTC_API/Protocols,有興趣的同學可以去瞭解一下。不過作者在此特別說明一下SDP協議,它是會話描述協議Session Description Protocol (SDP) 是一個描述多媒體串連內容的協議,例如解析度,格式,編碼,密碼編譯演算法等。所以在資料轉送時兩端都能夠理解彼此的資料。本質上,這些描述內容的中繼資料並不是媒體流本身。

 

WebRTC中NAT穿透淺析

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.