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地址,但也能被其它設備發現。

參考 IP Network Address Translator (NAT) Terminology and Considerations

ICE

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

參考 ICE | rfc8445

STUN

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

stun

有些路由器會限制設備與外面其它設備的連接。這意味著即使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

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

參考 TURN rfc8656

SDP

Session Description Protocol,會話描述協議。

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

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

參考 SDP: Session Description Protocol | rfc8866

參考

一些縮寫

- ACK: Acknowledgment (確認報文)
- AVP: Audio and Video profile (音頻視頻描述)
- B-Frame: Bi-directional Predicted Frame. A partial picture, is a modification of previous and future pictures. - (雙向預測幀,存儲圖片的部分信息,存儲的是相對前一張圖片和后一張圖片的差異信息)
- DCEP: Data Channel Establishment Protocol defined in RFC 8832 (DataChannel建立協議)
- DeMux: Demultiplexer (解復用器)
- DLSR: delay since last sender report (從最近一個Sender Report開始的時間延遲)
- DTLS: Datagram Transport Layer Security defined in RFC 6347
- E2E: end-to-end
- FEC: Forward Error Correction (前向糾錯)
- FIR: Full INTRA-frame Request (完整I幀請求)
- G.711: A narrowband audio codec (一個窄帶音頻編碼器)
- H.264: Advanced video coding for generic audiovisual services (面向通用視聽服務的高級視頻編碼)
- H.265: Conformance specification for ITU-T H.265 high efficiency video coding. (ITU-T H.265高效視頻編碼的一致性規范)
- HEVC: High Efficiency Video Coding (高效視頻編碼)
- HTTP: Hypertext Transfer Protocol (超文本傳輸協議)
- HTTPS: HTTP Over TLS defined in RFC 2818 (基于TLS的HTTP)
- I-Frame: Intra-coded Frame. A complete picture, can be decoded without anything else. (內部編碼幀,保存完整圖片信息,- 自解碼,不依賴外部數據)
- ICE: Interactive Connectivity Establishment defined in RFC 8445 (交互式連接建立協議)
- INIT: Initiate (初始化)
- IoT: Internet of Things (物聯網)
- IPv4: Internet Protocol, Version 4 (第四代因特網協議)
- IPv6: Internet Protocol, Version 6 (第六代因特網協議)
- ITU-T: International Telecommunication Union Telecommunication Standardization Sector (國際電信聯盟電信標準分局)
- JSEP: JavaScript Session Establishment Protocol defined in RFC 8829 (JavaScript會話建立協議)
- MCU: Multi-point Conferencing Unit (多點會話單元)
- mDNS: Multicast DNS defined in RFC 6762 (組播 DNS)
- MITM: Man-In-The-Middle
- MTU: Maximum Transmission Unit (最大傳輸單元)
- MUX: Multiplexing (復用,一般指把不同格式的數據合并存儲或傳輸)
- NACK: Negative Acknowledgment (逆確認報文,ACK反饋收到報文,NACK反饋未收到報文 )
- NAT: Network Address Translation defined in RFC 4787 (網絡地址轉換,域名地址轉換成IP地址)
- Opus: A totally open, royalty-free, highly versatile audio codec (一個完全開放、免版稅、高度通用的音頻編解碼器)
- P-Frame: Predicted Frame. A partial picture, containing only changes from the previous picture. (前向預測幀,只保存- 相對于上一幀的差異信息)
- P2P: peer-to-peer
- PLI: Picture Loss Indication (圖片丟失指示)
- PPID: Payload Protocol Identifier (Payload協議標識)
- REMB: Receiver Estimated Maximum Bitrate (接收端估計的最大比特率)
- RFC: Request for Comments (征求意見)
- RMCAT: RTP Media Congestion Avoidance Techniques (RTP媒體擁塞避免技術)
- RR: Receiver Report (RCTP接收者報告)
- RTCP: RTP Control Protocol defined in RFC 3550 (RTP控制協議)
- RTP: Real-time transport protocol defined in RFC 3550 (實施傳輸協議)
- RTT: Round-trip time (往返時間)
- SACK: Selective Acknowledgment (選擇性確認)
- SCTP: Stream Control Transmission Protocol defined in RFC 4960 (流控傳輸協議)
- SDP: Session Description Protocol defined in RFC 8866 (會話描述協議)
- SFU: Selective Forwarding Unit (選擇性轉發單元)
- SR: Sender Report (RCTP發送者報告)
- SRTP: Secure Real-time Transport Protocol defined in RFC 3711 (安全的RTP)
- SSRC: Synchronization Source (同步源)
- STUN: Session Traversal Utilities for NAT defined in RFC 8489 (NAT會話穿透)
- TCP: Transmission Control Protocol (傳輸控制協議)
- TLS: The Transport Layer Security defined in RFC 8446 (傳輸層安全)
- TMMBN: Temporary Maximum Media Stream Bit Rate Notification (臨時最大媒體流比特率通知)
- TMMBR: Temporary Maximum Media Stream Bit Rate Request (臨時最大媒體流比特率請求)
- TSN: Transmission Sequence Number (傳輸序列號)
- TURN: Traversal Using Relays around NAT defined in RFC 8656 (基于轉發的NAT穿透)
- TWCC: Transport Wide Congestion Control (傳輸擁塞控制)
- UDP: User Datagram Protocol (數據報協議)
- VP8, VP9: Highly-efficient video compression technologies (video “codecs”) developed by the WebM Project. - Anyone may use these codecs royalty-free. (WebM項目開發的高效視頻壓縮技術(視頻編解碼),完全免費)
- WebM: An open media file format designed for the web. (一個開放的Web媒體文件格式)
- WebRTC: Web Real-Time Communications. W3C WebRTC 1.0: Real-Time Communication Between Browsers (Web實時通信)

更多請參考 WebRTC概念簡介

?著作權歸作者所有,轉載或內容合作請聯系作者
平臺聲明:文章內容(如有圖片或視頻亦包括在內)由作者上傳并發布,文章內容僅代表作者本人觀點,簡書系信息發布平臺,僅提供信息存儲服務。
  • 序言:七十年代末,一起剝皮案震驚了整個濱河市,隨后出現的幾起案子,更是在濱河造成了極大的恐慌,老刑警劉巖,帶你破解...
    沈念sama閱讀 227,882評論 6 531
  • 序言:濱河連續發生了三起死亡事件,死亡現場離奇詭異,居然都是意外死亡,警方通過查閱死者的電腦和手機,發現死者居然都...
    沈念sama閱讀 98,208評論 3 414
  • 文/潘曉璐 我一進店門,熙熙樓的掌柜王于貴愁眉苦臉地迎上來,“玉大人,你說我怎么就攤上這事。” “怎么了?”我有些...
    開封第一講書人閱讀 175,746評論 0 373
  • 文/不壞的土叔 我叫張陵,是天一觀的道長。 經常有香客問我,道長,這世上最難降的妖魔是什么? 我笑而不...
    開封第一講書人閱讀 62,666評論 1 309
  • 正文 為了忘掉前任,我火速辦了婚禮,結果婚禮上,老公的妹妹穿的比我還像新娘。我一直安慰自己,他們只是感情好,可當我...
    茶點故事閱讀 71,477評論 6 407
  • 文/花漫 我一把揭開白布。 她就那樣靜靜地躺著,像睡著了一般。 火紅的嫁衣襯著肌膚如雪。 梳的紋絲不亂的頭發上,一...
    開封第一講書人閱讀 54,960評論 1 321
  • 那天,我揣著相機與錄音,去河邊找鬼。 笑死,一個胖子當著我的面吹牛,可吹牛的內容都是我干的。 我是一名探鬼主播,決...
    沈念sama閱讀 43,047評論 3 440
  • 文/蒼蘭香墨 我猛地睜開眼,長吁一口氣:“原來是場噩夢啊……” “哼!你這毒婦竟也來了?” 一聲冷哼從身側響起,我...
    開封第一講書人閱讀 42,200評論 0 288
  • 序言:老撾萬榮一對情侶失蹤,失蹤者是張志新(化名)和其女友劉穎,沒想到半個月后,有當地人在樹林里發現了一具尸體,經...
    沈念sama閱讀 48,726評論 1 333
  • 正文 獨居荒郊野嶺守林人離奇死亡,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內容為張勛視角 年9月15日...
    茶點故事閱讀 40,617評論 3 354
  • 正文 我和宋清朗相戀三年,在試婚紗的時候發現自己被綠了。 大學時的朋友給我發了我未婚夫和他白月光在一起吃飯的照片。...
    茶點故事閱讀 42,807評論 1 369
  • 序言:一個原本活蹦亂跳的男人離奇死亡,死狀恐怖,靈堂內的尸體忽然破棺而出,到底是詐尸還是另有隱情,我是刑警寧澤,帶...
    沈念sama閱讀 38,327評論 5 358
  • 正文 年R本政府宣布,位于F島的核電站,受9級特大地震影響,放射性物質發生泄漏。R本人自食惡果不足惜,卻給世界環境...
    茶點故事閱讀 44,049評論 3 347
  • 文/蒙蒙 一、第九天 我趴在偏房一處隱蔽的房頂上張望。 院中可真熱鬧,春花似錦、人聲如沸。這莊子的主人今日做“春日...
    開封第一講書人閱讀 34,425評論 0 26
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽。三九已至,卻和暖如春,著一層夾襖步出監牢的瞬間,已是汗流浹背。 一陣腳步聲響...
    開封第一講書人閱讀 35,674評論 1 281
  • 我被黑心中介騙來泰國打工, 沒想到剛下飛機就差點兒被人妖公主榨干…… 1. 我叫王不留,地道東北人。 一個月前我還...
    沈念sama閱讀 51,432評論 3 390
  • 正文 我出身青樓,卻偏偏與公主長得像,于是被迫代替她去往敵國和親。 傳聞我的和親對象是個殘疾皇子,可洞房花燭夜當晚...
    茶點故事閱讀 47,769評論 2 372

推薦閱讀更多精彩內容