流媒體傳輸協議RTP、RTCP、RTSP、RTMPS、HLS,究竟是個啥東東?

互聯網技術的本質就是通信協議,各種通信協議將各種終端連接了起來。流媒體協議是建立在互聯網TCP/IP協議上的多媒體數據流傳輸分發協議。它主要為主播端和觀眾端提供數據傳輸和分發的解決方案。

現在互聯網上的流數據佔據帶寬的大部分,音頻、短視頻、長視頻佔據了互聯網應用的主流。數據流通過傳輸技術被運來運去,那麼流數據遵循哪些傳輸規則和協議呢,各個協議有什麼優缺點呢?

RFC請求評論文檔

在討論流數據傳輸技術之前,我們先了解一下RFC,這對理解流數據協議至關重要。RFC英文全稱為Request For Comments,中文字面意思是“請求評論”,它是一系列編號文件。

RFC文檔最初由Steve Crocker(史迪夫·科洛克)在1969年發明,發明的初衷是記錄ARPANET開發中的非官方註解信息。

現在RFC文檔由IETF(Internet Engineering Task Force,Internet工程特別行動組)產生,並由專家組、RFC編輯在編輯後發佈。現在RFC文檔已經成為互聯網規範標準和事件的官方記錄庫。RFC文檔是最全面的關於互聯網協議標準的記錄庫,目前已經超過了9000個文檔。

絕大部分互聯網技術協議都包含在RFC文檔中,包括TCP、IP、FTP、RTP等。

流媒體傳輸協議RTP、RTCP、RTSP、RTMPS、HLS,究竟是個啥東東?

流數據協議族

RTP數據流協議

流數據具有數據量大、實時傳輸等特點,它對網絡傳輸有高帶寬、低時延、同步和高可靠性的要求。為了保證好的QoS質量,傳輸模式、協議棧和應用體系控制等問題就顯得非常重要。下面我們先來討論RTP協議。

RTP英文全稱Real-time Transport Protocol實時流傳輸協議。在RFC中定義為RFC3550/RFC3551。RTP由IETF(Internet Engineering Task Force,互聯網工程任務組)工作組制定。

該協議主要實現實時數據的傳輸,它在數據包頭中提供編碼類型,包中數據的採樣時刻、數據包的序號,依據這些信息傳輸雙方可以協商編碼類型,可以對數據包進行排序。

RTP 本身並沒有服務質量保證機制,它依賴於低層服務去實現這一過程。

RTCP數據流協議

RTCP英文全稱Real-time Transport Control Protocol,實時傳輸控制協議,該協議是RTP數據流協議的一個姐妹協議。RTCP為RTP數據流提供信道外控制。RTCP並不傳輸數據,它和RTP協作將多媒體數據打包和發送。RTCP的主要功能是保證服務質量,為RTP提供服務質量反饋。

SRTP & SRTCP數據流協議

SRTP英文全稱為Secure Real-time Transport Protocol安全實時傳輸協議,該協議是在實時傳輸協議RTP基礎上定義的一個協議,旨在為RTP數據提供加密、消息認證、完整性保證和重放保護。可以參考文檔RFC3711。

RTCP同樣也有一個伴生協議,它被稱為安全實時傳輸控制協議Secure RTCP或SRTCP。在使用實時傳輸協議或實時傳輸控制協議時,是應用安全傳輸協議還是明文傳輸在數據傳輸過程中是可以選擇的。

RTSP數據流協議

RTSP英文全稱Real Time Streaming Protocol實時串流協議,該協議由Real Networks和Netscape共同提出的,它是用來控制流數據串的協議。該協議定義了一對多應用程序如何有效地通過IP網絡傳送流數據。RTSP提供了一個可擴展框架,使實時數據,如音視頻的受控、點播成為可能。

它允許同時對多個串流控制,服務器端可以自行選擇使用TCP或UDP來傳送串流內容,它的語法和運作跟HTTP 1.1類似,能容忍網絡延遲。詳情可以參考文檔RFC2326。

RTSP 和RTP的區別與聯繫

RTSP與RTP最大的區別在於,RTSP是RTP的上層協議,是一種類似於http協議的網絡應用層協議。RTSP允許雙向實時數據傳輸,它允許客戶端向服務器端發送控制操作,例如回放、快進、倒退等操作。此外,RTSP既可以使用RTP來傳送數據,還可以選擇TCP、UDP等通道來傳輸數據。

流媒體傳輸協議RTP、RTCP、RTSP、RTMPS、HLS,究竟是個啥東東?

協議棧

RSVP協議

RSVP英文全稱Resource reSerVation Protocol資源預留協議,該協議是網絡層協議,它是針對IP網絡傳輸層不能保證QoS和支持多點傳輸而提出的協議。RSVP事先在業務流傳輸前預約網絡資源,建立靜態或動態的傳輸邏輯通路,保證每一業務流都有足夠的帶寬,這樣能夠提高傳輸質量。

RSVP是由接收方執行操作的協議,接收方決定預留資源的優先級,並對預留資源進行初始化和管理。RSVP共有三種預留資源類型,無濾包器、固定濾包器和動態濾包器。

流媒體傳輸協議RTP、RTCP、RTSP、RTMPS、HLS,究竟是個啥東東?

數據流協議的作用


RTMP和RTMPS協議

RTMP英文全稱Real Time Messaging Protocol實時消息傳送協議。它是Adobe Systems公司為Flash播放器和服務器之間流數據傳輸開發的開放協議。RTMP協議既可以傳輸AMF格式數據,也可以傳輸FLV格式數據。

RTMP協議有三個分支,第一種是工作在TCP協議上的明文傳輸,它使用的端口是1935;第二種是RTMPT,RTMPT被封裝在HTTP請求之中,可以穿越防火牆進行傳輸;第三種是RTMPS,它也是封裝在HTTP之中,不過與RTMPT不同的是,它使用HTTPS安全連接,可以保證傳輸的安全。

目前,大多數互聯網數據流傳輸使用該協議。

HLS數據流傳輸協議

HLS英文全稱HTTP Live Streaming在線流傳輸協議,該協議是由美國蘋果公司實現的基於HTTP的流數據傳輸協議,可以實現流媒體的直播和點播。該協議主要為iOS系統服務。

HLS實際上並不是真正的實時流協議,HLS協議在服務器端將數據流存儲為連續的、短時長的MPEG-TS格式文件,客戶端不斷下載並解析播放這些小文件從而實現實時流效果。可以認為,HLS是以點播流技術方式來實現實時流的協議。這樣的缺點是延時高。 

RTMP和HLS比較

RTMP是APP中最常用的數據流傳輸協議,它可以做到低延時。RTMP協議進行數據傳輸時,它將一整條數據流封裝成FLV通過HTTP打包、TCP長連接分發出去,在服務器端不產生落地文件,延時通常為 1至3秒,遠超HLS。

HLS協議通過切片傳輸數據,邊下載邊傳輸,所以傳輸延時要比RTMP長。但是,HLS基於HTTP/80 傳輸,很少會被防火牆攔下。HLS基於無狀態協議(HTTP)支持平滑擴展,RTMP對視頻服務器進行平滑擴展困難。

做APP數據流時一般會選擇RTMP而不是HLS,特殊情況是微信端不支持RTMP,所以HLS表現良好。


分享到:


相關文章: