WebRTC概念介紹

WebRTC

WebRTC(Web Real-Time Communication)。Real-Time Communication,實時通訊。

WebRTC能讓web應用和站點之間選擇性地分享音視頻流。在不安裝其它應用和插件的情況下,完成點對點通信。
WebRTC背後的技術被實現爲一個開放的Web標準,並在所有主要瀏覽器中均以常規JavaScript API的形式提供。對於客戶端(例如Android和iOS),可以使用提供相同功能的庫。 WebRTC是個開源項目,得到Google,Apple,Microsoft和Mozilla等等公司的支持。2011年6月1日開源並在Google、Mozilla、Opera支持下被納入萬維網聯盟的W3C推薦標準。

WebRTC包括一系列API和相互關聯的協議來實現通信。

相關技術

VoIP

Voice over Internet Protocol,在網絡上傳輸聲音消息的技術。
例如網絡音頻通話。或者叫做IP電話,寬帶電話。使用VoIP技術的一大原因是費用低。

相關協議

NAT

Network address translation,網絡地址轉換。
NAT能給你的設備一個公共IP地址。一個路由器(router)有一個公共IP地址,每個連接到路由的設備有一個私有的IP地址。
設備發送請求時,會從一個特定端口,通過私有IP發送到路由的公共IP。這樣每個設備在網上不需要都有一個公共IP地址,但也能被其它設備發現。

ICE

Interactive Connectivity Establishment,互動式連接建立(交互式連通性建立)。
ICE是一套能讓web瀏覽器之間互相連接的框架。通常來說,節點A到B是很難直接相連的。防火牆會阻止連接,設備沒有公共IP地址,路由不允許直接連接其他節點。
ICE使用STUN或者TURN服務(或者同時使用兩者)來建立連接。

STUN

Session Traversal Utilities for NAT (STUN) ,NAT會話傳輸工具。
STUN協議能發現客戶端(節點)的公共地址。客戶端發送一個請求給網上的STUN服務器,服務器返回客戶端的公共地址。不管客戶端在路由器的NAT後能否可達。
STUN爲請求者提供了可公開訪問的IP地址,它就不再參與對話了。

有些路由器會限制設備與外面其它設備的連接。這意味着即使STUN服務器知道了路由的公共IP地址,也沒法建立連接。
這種情況下我們需要使用TURN

TURN

Traversal Using Relays around NAT,使用中繼繞過NAT傳輸。
一些路由器使用一種叫“Symmetric NAT”(對稱型NAT)的限制。這意味着路由器僅允許之前連接過的節點(peer)來建立連接。

STUN提供了一個能讓應用(終端,節點)穿過NAT的方法。STUN允許客戶端獲得一個傳輸地址(一個IP和端口)來獲取其它節點的數據。
然而STUN獲取到的地址不一定能被所有節點使用。這些地址是否可用取決於網絡拓撲的情況。所以,單獨STUN無法提供完整的穿越NAT的方案。

TURN協議允許兩個處於NAT環境的主機利用中繼進行通訊。客戶端能夠在TURN服務器上分配資源,與其它客戶端(peer)進行通訊。
客戶端關聯一個TURN服務器的地址(relayed server address)來作爲中繼。
客戶端發送報文給TURN服務,TURN服務使用relayed server address作爲源地址向其他客戶端中繼轉發報文。
穿越NAT,這個過程就像是“打洞”。也有人稱TURN服務器爲“打洞服務器”。

這麼看,TURN服務器需要有大的帶寬。因此,ICE會優先考慮直接通訊,無法直接通訊情況下會使用TURN。

SDP

Session Description Protocol,會話描述協議。

描述多媒體連接內容的協議。例如分辨率,格式,編碼,加密算法等等。

實際上,SDP不是個真正的協議。它也是用來描述設備之間連接與傳輸多媒體的數據格式。

參考

原文鏈接

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章