WebRTC中的協議

1 前言

掐指一算,貌似快兩年沒寫博客了。最近在看有關音頻視頻直播相關的東西,其中就包括WebRTC。WebRTC並不是一個協議,而是一項實時通訊技術,其中使用了許多的協議,這篇文章就來總結一下WebRTC中的各種協議。這篇文章需要讀者對WebRTC有一定的瞭解。

2 傳輸層協議

開門見山的說,WebRTC使用UDP作爲傳輸層協議。使用TCP作爲傳輸層協議的話,如果中間出現丟包的情況,由於TCP需要保證傳輸的可靠性,會反覆向發送端索取丟失的包,已經獲取的包會被緩衝起來。而UDP則不保證傳輸的可靠性,適合WebRTC實時性大於可靠性的需求。

3 RTCPeerConnection相關協議

在WebRTC中,RTCPeerConnetcion API負責把獲取到的媒體流傳輸到另外一臺視頻播放設備,其中涉及到了多種協議。

3.1 P2P內網穿透

3.1.1 NAT協議

網絡地址轉換協議(Network Address Translator),其作用是將內網IP映射爲外網IP,也叫做網絡掩蔽或者IP掩蔽(IP masquerading),是一種在IP數據包通過路由器或防火牆時重寫來源IP地址或目的IP地址的技術。這種技術被普遍使用在有多臺主機但只通過一個公有IP地址訪問因特網的私有網絡中,NAT協議減緩IPv4地址的消耗。
值得一提的是,NAT協議的功能是由幾個層共同完成的,一般認爲NAT協議工作在網絡層但是要結合傳輸層共同來實現。後續將計劃單獨寫一篇博客來介紹NAT協議相關知識。

3.2 流媒體協議

WebRTC採用SRTPSRTCP作爲其流媒體協議,用於傳輸音視頻,但SRTP和SRTCP與另外兩個協議——RTP和RTCP關係比較密切,這裏也一併介紹了。

3.2.1 RTP

實時傳輸協議 (Real-time Transport Protocol)是用於Internet上針對多媒體數據流的一種傳輸層協議。RTP協議詳細說明了在互聯網上傳遞音頻和視頻的標準數據包格式,RTP協議是建立在UDP協議上的。
RTP 由兩個緊密鏈接部分組成: RTP ― 傳送具有實時屬性的數據;RTP 控制協議(RTCP) ― 監控服務質量並傳送正在進行的會話參與者的相關信息。

3.2.2 RTCP

實時傳輸控制協議(Real-time Transport Control Protocol或RTP Control Protocol或RTCP)是RTP的一個姐妹協議。RTCP爲RTP媒體流提供信道外控制。RTCP本身並不傳輸數據,但和RTP一起協作將多媒體數據打包和發送。RTCP定期在會話參加者之間傳輸控制數據。RTCP的主要功能是爲RTP所提供的服務質量提供反饋。
RTCP收集相關媒體連接的統計信息,例如:傳輸字節數,傳輸分組數,丟失分組數,jitter,單向和雙向網絡延遲等等。網絡應用程序可以利用RTCP所提供的信息試圖提高服務質量,比如限制信息流量或改用壓縮比較小的編解碼器。RTCP本身不提供數據加密或身份認證。SRTCP可以用於此類用途。

3.2.3 SRTP

安全實時傳輸協議(Secure Real-time Transport Protocol) ,是在實時傳輸協議(Real-time Transport Protocol或RTP)基礎上所定義的一個協議,旨在爲單播和多播應用程序中的實時傳輸協議的數據提供加密、消息認證、完整性保證和重放保護。

3.2.4 SRTCP

安全實時傳輸控制協議(Secure RTCP或SRTCP),類似於RTP和RTCP之間的關係,SRTP同樣也有一個伴生協議,即爲SRTCP協議。

3.3 數據協議

3.3.1 DTLS

數據包傳輸層安全性協議(Datagram Transport Layer Security) UDP是不安全的,但是WebRTC要求所有傳輸的數據(音頻、視頻和自定義應用數據)都必須加密,所以這裏就要引入一個DTLS協議的概念。
DTLS就是因爲TLS無法保證UDP上傳輸的數據的安全,所以在現存的TLS協議架構上提出了擴展,用來支持UDP。

3.3.2 TLS

安全傳輸層協議(TLS)用於在兩個通信應用程序之間提供保密性和數據完整性,是SSL 3.0的後續版本。

4 DataChannel相關協議

除了傳輸音頻和視頻數據,WebRTC 還支持通過 DataChannel API 在端到端之間傳 輸任意應用數據。DataChannel 依賴於 SCTP,而 SCTP 在兩端之間建立的 DTLS 信道之上運行的.

4.1 STCP

流控制傳輸協議(Stream Control Transmission Protocol),是一種在網絡連接兩端之間同時傳輸多個數據流的協議。
SCTP同時具備了TCP和UDP中最好的功能:

  • 面向消息的 API
  • 可配置的可靠性及交付語義
  • 內置流量和擁塞控制機制

TCP與SCTP對比如下:

  • TCP是單流有序傳輸,SCTP是多流可配置傳輸
  • TCP是單路徑傳輸,SCTP是多路徑傳輸
  • SCTP兩端之間的連接可以綁定多條IP,只要有一條連接是通的,那麼就是通的
  • TCP連接建立是三次握手,SCTP則需要四次握手
  • TCP以字節爲單位傳輸,SCTP以數據塊爲單位傳輸

5. 參考資料

WebRTC實時通信協議詳解
流媒體協議介紹
WebRTC:數據傳輸相關協議簡介

發佈了66 篇原創文章 · 獲贊 47 · 訪問量 32萬+
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章