日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

WebRTC服务器理论铺垫(六):OpenSSL协议,DTLS协议,RTP协议和SRTP协议

發布時間:2023/12/29 编程问答 37 豆豆
生活随笔 收集整理的這篇文章主要介紹了 WebRTC服务器理论铺垫(六):OpenSSL协议,DTLS协议,RTP协议和SRTP协议 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

文章目錄

  • 一、SSL協議
  • 二、OpenSSL
  • 三、TLS和DTLS
  • 四、DTLS的通信的步驟圖
  • 五、RTP協議和SRTP協議
    • 5.1 詳解RTP協議
    • 5.2 詳解RTCP協議
    • 5.3 RTP && RTCP的協議的關鍵技術
  • 六、DTLS-SRTP協議


一、SSL協議

SSL的全名叫做secure socket layer(安全套接字層),最開始是由一家叫網景的互聯網公司開發出來,主要是防止信息在互聯網上傳輸的時候不被竊聽或者篡改,后來網景公司提交SSL給ISOC組織做標準化,改名為TLS(transport layer security)。其實在互聯網的數據傳輸中,對數據進行竊聽和修改是非常容易的,如果你上網連得的是wifi,那么你的數據一定會經過wifi路由器,通過對路由器做些手腳就可以拿到這些數據。

SSL主要簡化有以下幾個步驟:

  • 客戶端向服務器端索要并驗證對方證書
  • 雙方協商生成會話密鑰(前兩部合稱為握手階段,handshake)
  • 雙方采用會話密鑰進行加密通信
  • 斷開連接
  • 二、OpenSSL

    上面的SSL只是一個協議,openssl則是SSL的實現工具,另外openssl還包含了公鑰私鑰的生成,摘要生成等各種工具。
    OpenSSL由三部分組成:

  • libencrpt庫:加密解密庫
  • libssl庫,實現SSL功能,用于通信加密的庫
  • openssl:多用途命令行工具
  • 三、TLS和DTLS

    TLS是基于TCP協議的,DTLS是基于UDP協議的。
    DTLS協議的握手過程如下:

    DTLS的安全性在以下幾個方面得到了保障:

    • DTLS在握手時進行Cookie校驗,防止dos攻擊(放重放)。
    • DTLS在握手時具有身份證書和數據簽名,防止篡改和冒充。
    • DTLS在握手時使用公鑰密碼進行加密,防止秘密密鑰被泄露。
    • DTLS在通信時使用秘密密鑰進行加密,防止通信內容泄露(機密性)。
    • DTLS在傳輸方面使用HMAC對數據完整性進行校驗,防止數據被篡改(完整性).

    簡單的來說,DTLS是TLS的升級版,兩者的握手過程基本上是一致的,差別以及特別說明如下:

    • DTLS中HelloVerifyRequest是為防止DoS攻擊增加的消息。
    • TLS 沒有發送證書申請,這個也不是必須的,是反向驗證即服務器驗證客戶端。
    • DTLS的Record協議 新增了序號和紀元,以及ClientHello中新增了Cookie,以及握手中新增了碎片信息(防止超過UDP的MTU),都是為了適應UDP的丟包以及容易被攻擊做的改進。
    • DTLS最后的警報是將客戶端的加密警報消息,解密之后直接響應給客戶端的,實際上服務器應該回應加密的消息,這里服務器回應明文是為了解析客戶端加密的那個警報包是什么。

    四、DTLS的通信的步驟圖


    注意,在STUN Request中會將ICE的username和password帶過去。
    如下圖中的ice-ufrag和 ice-pwd

    五、RTP協議和SRTP協議

    RTP(Real Time Transport Protocol)是針對Internet上多媒體數據流的一個傳輸協議。其被定義為在一對一或者一對多的傳輸情況下工作,其目的是提供時間信息和實現流同步。RTP本身只能保證實時數據的傳輸,并不能為按順序傳送數據包提供可靠的傳送機制,也不能提供流量控制或者擁塞控制,它依靠RTCP提供這些服務。

    Real-time Transport Control Protocol或RTP Control Protocol或簡寫RTCP)是實時傳輸協議(RTP)的一個姐妹協議。RTCP由RFC 3550定義(取代作廢的RFC 1889)。RTP 使用一個 偶數 UDP port ;而RTCP 則使用 RTP 的下一個 port,也就是一個奇數 port。RTCP與RTP聯合工作,RTP實施實際數據的傳輸,RTCP則負責將控制包送至電話中的每個人。其主要功能是就RTP正在提供的服務質量做出反饋。

    5.1 詳解RTP協議

    從下圖可看出RTP被劃分在傳輸層,它建立在UDP上。同UDP協議一樣,為了實現其實時傳輸功能,RTP也有固定的封裝形式。RTP用來為端到端的實時傳輸提供時間信息和流同步,但并不保證服務質量。服務質量由RTCP來提供。

    RTP的數據報文格式如下:
    填充位(1bit)若p=1則在該報文的尾部填充一個或多個額外的八位組,它們不是有效載荷的一部分。填充可能用于某些具有固定長度的加密算法或者用在底層數據單元中傳輸多個RTP包
    擴展(X):1個比特,置“1”表示RTP報頭后緊隨一個擴展報頭
    參與源數(CSRC計數(CC) )4b,CSRC計數包括緊接在固定頭后CSRC標識符個數。
    標記(M):1個比特,其具體解釋由應用文檔來定義。例如,對于視頻流,它表示一幀的結束,而對于音頻,則表示一次談話的開始
    有效載荷類型,7個比特,它指示在用戶數據字段中承載數據的載荷類別,記錄后面資料使用哪種編碼,接收端找出相應的 decoder 解碼出來。

    音頻:μ律PCM(0),GMS(3)
    A律PCM(8),G.722(9),G728(1)
    視頻:活動JPEG(26)、H.261(31)、
    MPEG1(32)、MPEG2(33)等

    5.2 詳解RTCP協議

    RTCP也是用UDP來傳送的,但RTCP封裝的僅僅是一些控制信息,因而分組很短,所以可以將多個RTCP分組封裝在一個UDP包中。RTCP有如下五種分組類型。


    1、SR:
    發送端報告包,用于發送和接受活動源的統計信息
    2、RR:
    接收者報告包,用于接收非活動站的統計信息;
    3、SDES:
    源描述包,用于報告和站點相關的信息,包括CNAME;
    4、BYE:
    斷開RTCP包,是站點離開系統的報告,表示結束;
    5、APP:
    應用特定函數。

    5.3 RTP && RTCP的協議的關鍵技術

    • 時間戳

    • 時延:
      影響時延的因素有多個方面:

    • 編解碼
    • 網絡
    • 防抖動的緩沖:抖動指的是一對包中接收機相對于發射機的時間跨度的差值的平均偏差。該值等于兩個包相對傳輸時間的差值,相對傳輸時間指的是包的RTP時間標志和到達時刻接收機時鐘,以同一單位的差值。
      比如我們假設Si是包i的開始傳輸RTP時間標志,Ri是包i到達時刻的RTP時間標志值。對于兩個包i和j,D可以表達為:
      D(i,j) = (Rj - Ri) - (Sj - Si) = (Rj - Sj) - (Ri - Si).
    • 到達時刻抖動J可以在收到從源SSRC_n來的每個數據包i后連續計算,利用該包和前一包i-1的偏差D。
      根據公式 J(i) = J(i-1) + (|D(i-1,i)| - J(i-1))/16 計算


    SRTP其實是在RTP的基礎上,對數據(Encrypted RTP payload)進行加密的協議.

    六、DTLS-SRTP協議

    在WebRTC中,DTLS要解決的問題是交換密鑰,確認雙方的加密算法(比如AES128)。

    在WebRTC中,SRTP要解決的問題是對數據加密保證數據安全,保證數據完整性。

    LIBSRTP: 由思科開發的開源庫。調用步驟如下圖所示


    總結

    以上是生活随笔為你收集整理的WebRTC服务器理论铺垫(六):OpenSSL协议,DTLS协议,RTP协议和SRTP协议的全部內容,希望文章能夠幫你解決所遇到的問題。

    如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。