1. 程式人生 > 其它 >WebRTC概念介紹

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不是個真正的協議。它也是用來描述裝置之間連線與傳輸多媒體的資料格式。

參考

一個軟體工程師的記錄