對網絡協議來講,須要作的一般就兩件事情:一、創建鏈接,二、傳輸數據,WebRTC也不例外。html
假設WebRTC應用的兩端已經創建了鏈接,那麼,剩下就是如何傳輸數據的問題了。安全
WebRTC同時支持傳輸音視頻數據、自定義應用數據。這其中,涉及多種協議,包括UDP、RTP/SRTP、RTCP/SRTCP、DTLS、SCTP。網絡
這些協議名字比較類似,很容易讓人混淆,簡單總結下:tcp
下面就簡單介紹下,這些協議是作什麼的,有什麼區別,存在什麼聯繫。加密
對WebRTC應用來講,無論是音視頻數據,仍是自定義應用數據,都要求基於加密的信道進行傳輸。DTLS 有點相似 TLS,在UDP的基礎上,實現信道的加密。設計
DTLS的主要用途,就是讓通訊雙方協商密鑰,用來對數據進行加解密。視頻
首先,咱們先來看下RTP、RTCP的大概用途:htm
也就是說:get
至於SRTP、SRTCP,分別在RTP、RTCP的基礎上加了個S(Secure),表示安全的意思,這個就是DTLS作的事情了。同步
結合前面內容,總結一下音視頻數據的發送過程:
備註:SRTP/SRTCP包中,除了加密數據,還有其餘信息,這裏不展開細節。
SCTP(Stream Control Transmission Protocol):流控制傳輸協議。
以前介紹過,RTP/RTCP主要用來傳輸音視頻,是爲了流媒體設計的。而對於自定義應用數據的傳輸,WebRTC中使用了SCTP協議。
一樣的,SCTP依賴DTLS創建的加密信道,對於自定義應用數據的發送,流程以下:
爲了便於講解,跳過了不少協議的細節,有些地方可能會不夠嚴謹,感興趣的同窗能夠進行進一步研究,好比如下問題:
RTP: A Transport Protocol for Real-Time Applications
https://tools.ietf.org/html/rfc3550
Stream Control Transmission Protocol
https://tools.ietf.org/html/rfc4960
Datagram Transport Layer Security
https://tools.ietf.org/html/rfc4347