Posted on

TCP/UDP協議中的串流協定

基於或可以使用UDP (User Datagram Protocol)的協定

RTP(Real-time Transport Protocol)

RTP(Real-time Transport Protocol,即時傳輸協定)是一個網絡協定,用於交付音頻和視頻等多媒體數據流。以下是RTP的一些關鍵特性和細節:

  1. 即時性:RTP旨在實時交付數據,這意味著它需要以最小的延遲和抖動來傳輸數據。
  2. 協議層次:RTP通常運行在UDP之上,這樣可以降低延遲,但可能會導致一些封包丟失。在某些情況下,它也可以運行在TCP上。
  3. 封包結構:RTP封包包括了一個標頭和有效負載。標頭包括有關封包的資訊,如序列號、時間戳等,用於同步和順序排列。有效負載則包括媒體數據。
  4. 同步和排序:RTP的頭部包含一個序列號,用於標識每個數據包。這使得接收端能夠檢測丟失的數據包並重新排序接收到的數據包。在實時通信中,尤其是視頻和音頻流,這一功能非常重要,因為它可以讓接收端正確地播放數據。每個RTP數據包還包含一個時間戳,用於表示數據的取樣時刻。這可以讓接收端同步不同類型的媒體流(例如音頻和視頻),並控制播放的速度和節奏。
  5. 與RTCP的組合使用:RTP通常與RTCP(RTP控制協議)一同使用。RTCP可以提供有關媒體傳輸質量的反饋,如丟包率、抖動等,這有助於調整和改進傳輸質量。
  6. 多播和單播:RTP支持單播和多播傳輸,使其能夠服務於一對一通信和一對多通信的場景。
  7. 可擴展性:RTP本身是一個相對簡單的協議,但它的設計允許通過擴展標頭和其他機制來添加新功能。
  8. 安全性:RTP可以與SRTP(安全RTP)結合使用,以提供加密和數據完整性保護。

RTP(Real-time Transport Protocol)和WebRTC(Web Real-Time Communication)是兩個密切相關但有所不同的技術。

  1. 定義和目的
    • RTP:是一個協議,用於實時傳輸多媒體數據,例如音頻和視頻流。它可以運行在各種應用和平台上。
    • WebRTC:是一個開放的框架,允許Web瀏覽器進行即時通信(RTC)。它包括一組協議和API,用於在Web瀏覽器之間建立P2P連接。
  2. 組件和協議
    • RTP:是實時數據傳輸的核心協議之一,通常與RTCP(RTP控制協議)一起使用。
    • WebRTC:使用了多個協議和技術,其中RTP就是其中之一,用於媒體數據的實時傳輸。WebRTC還使用了其他協議,如STUN/TURN/ICE(用於NAT穿透和對等發現)和DTLS/SRTP(用於安全性)。
  3. 應用範圍
    • RTP:不限於Web,可用於各種音頻和視頻通信應用。
    • WebRTC:主要用於Web應用,允許瀏覽器進行視頻和音頻通信。
  4. 傳輸層
    • RTP:通常運行在UDP上,也可以在TCP上。但是RTP在TCP上運行時,可能會有一些效能方面的考量,由於RTP自身具有序列號,用於檢測丟失的數據包並重新排序接收到的數據包,與TCP的可靠傳輸機制重疊。另外,TCP的可靠傳輸機制需要確認(ACK)機制,可能會增加傳輸的延遲
    • WebRTC:使用RTP作為其媒體數據的傳輸協議,並使用UDP作為傳輸層協議。

在WebRTC應用中,你可能需要使用WebSocket作為信令通道,以此幫助建立和協調P2P連接。在這種情況下,WebSocket用於傳送元數據(例如SDP描述和ICE結果),而WebRTC用於傳送實時語音、視頻和數據。

RTSP(Real Time Streaming Protocol)

RTMP 和 RTSP 都是使用 TCP 進行控制信令傳輸,但它們在傳輸媒體數據的方式上有所不同。RTMP 使用 TCP 進行媒體數據的傳輸,而 RTSP 使用 RTP/RTCP 在 UDP 上進行媒體數據的傳輸傳輸。RTSP允許客戶端通過建立和控制媒體流會話來請求和傳輸實時媒體數據。

以下是RTSP的一些特點和功能:

  1. 實時性:RTSP主要用於實時傳輸音頻和視頻等實時媒體數據,能夠提供較低的傳輸延遲,適用於實時的音視頻通訊。
  2. 客戶端/服務器模型:RTSP採用客戶端/服務器模型,客戶端通過發送請求來控制服務器上的媒體流,並獲取媒體數據。
  3. 控制功能:RTSP支持控制功能,客戶端可以發送請求來控制媒體流的播放、暫停、快進、倒退等操作。
  4. 媒體描述:RTSP支持媒體描述功能,客戶端可以通過請求獲取媒體流的描述信息,如編解碼器信息、媒體流格式等。
  5. 使用RTP/RTCP:RTSP常用與RTP(Real-time Transport Protocol)和RTCP(RTP Control Protocol)結合使用,以在網絡上傳輸實時媒體數據。

RTSP在視頻監控、視頻會議、流媒體直播等場景中得到廣泛應用。它為實時媒體數據的傳輸提供了一種靈活、高效的通信機制,使實時音視頻通訊和流媒體播放成為可能。

SRT(Secure Reliable Transport)


SRT(Secure Reliable Transport)是一種基於UDP的開源傳輸協定,由Haivision公司發起並由SRT聯盟持續開發。它的主要目的是優化在公共網路(如互聯網)上進行高品質視訊串流的性能。

SRT旨在解決在廣播等高品質視訊串流場景下,對於低延遲、丟包率低的傳輸要求。它在UDP之上實現了數據包重傳機制,並且加入了AES加密,以確保傳輸的安全性。此外,SRT還提供了一個預測網路傳輸性能的機制(稱為「SRT預測模型」),該模型可動態調整傳輸參數,以優化傳輸性能並減少延遲。

因此,SRT協定將UDP的低延遲特性與TCP的可靠傳輸特性相結合,旨在在公共網路上提供一種安全、可靠、低延遲的視訊傳輸解決方案。這使得它在如廣播、遠程生產和OTT串流等領域中得到了廣泛應用。

QUIC (Quick UDP Internet Connections)

Quick UDP Internet Connections(QUIC)是一種實驗性的傳輸層協議,旨在優化網絡連接性能並提高網絡傳輸的安全性。QUIC主要依賴於用戶數據報協議(UDP)而非傳統的傳輸控制協議(TCP) 。這使得 QUIC 能夠降低網絡延遲、提高連接速度,並在保持安全性的同時減少握手次數

要使用QUIC,您需要遵循以下幾個步驟:

  1. 確保支持QUIC協議的瀏覽器或客戶端要使用QUIC,首先您確保的瀏覽器或客戶端支持該協議。許多現代瀏覽器(如Google Chrome和Mozilla Firefox)已默認啟用QUIC。如果使用或其他瀏覽器,請查看其文檔以確認是否支持QUIC,並了解如何實現。
  2. 使用支持QUIC的服務器為了充分利用QUIC協議的優勢,您需要確保服務器端也支持QUIC。您可以選擇支持QUIC的雲服務商,如Google雲平台,或者手機搭建支持QUIC的服務器,例如使用Caddy或nginx 。
  3. 配置服務器 如果您要搭建自己的服務器,需要配置服務器以啟用QUIC。對於Caddy和nginx等服務器軟件,您可以參考相應的文檔來配置QUIC支持。確保您已正確配置服務器以使用QUIC,並且需要時提供相應的加密證書。
  4. 測試QUIC連接一旦服務器和客戶端都支持QUIC,您就可以通過訪問設置為使用QUIC的網站或服務來測試連接。可以使用瀏覽器的開發者工具檢查網絡連接是否成功地使用了QUIC協議。
  5. 監控和優化使用QUIC協議後,您可能需要監控連接性能,並根據需要進行調整。可以使用各種網絡分析工具來評估QUIC連接的表現,並根據結果優化服務器配置。

MPEG-DASH(Dynamic Adaptive Streaming over HTTP)

在使用HTTP-TS進行傳輸時,需要對數據進行分片,以提高傳輸效率和穩定性。可以使用各種分片技術,例如MPEG-DASH的架構技術、HLS的架構M3U8文件等。雖然名稱中包含“HTTP”,但MPEG-DASH可以在任何數據傳輸協議上運行,包括UDP

MPEG-DASH 通常使用 HTTP 協議,因此它可以通過標準的 HTTP 端口 80 進行傳輸。如果是使用 HTTPS 的話,則是端口 443。這樣的設計使得 MPEG-DASH 能夠更容易通過防火牆和代理伺服器,並且在現有的 Web 基礎設施上部署,因為它使用的是 Web 通信的標準端口和協議。

這種基於 HTTP 的流媒體傳輸方式還有其他的好處,例如緩存和兼容性,因為許多現有的 HTTP 伺服器和網絡設備已經能夠支持 MPEG-DASH,無需進行特殊的配置或升級。

MPEG-DASH(Dynamic Adaptive Streaming over HTTP)是一種自適應比特率流媒體技術,允許高品質的流媒體通過HTTP進行交付,從不同的比特率和質量的媒體文件中進行選擇。因此,你可以將其視為一種基於HTTP的分片技術,而非一個獨立的傳輸協議

這種自適應技術的核心是將媒體內容分成多個小的段(或稱分片),然後通過HTTP傳輸。客戶端(例如視頻播放器)可以根據網絡條件和設備能力動態選擇不同的質量和比特率的段進行播放。

這使得MPEG-DASH可以在各種網絡條件下提供更好的視頻觀看體驗,適應網絡帶寬的變化,並提供流暢的播放,無論連接速度快慢。它不是一個新的傳輸協議,而是建立在現有的HTTP協議之上的一種媒體交付方法。

RTMP (Real-Time Messaging Protocol)

RTMP(Real-Time Messaging Protocol)和 RTSP(Real Time Streaming Protocol)都是基於 TCP 的應用層協議,它們都使用 TCP 協議進行數據傳輸。雖然它主要使用TCP,但也可以使用UDP。

RTMP是一種用於實時數據傳輸的協議,主要用於音頻、視頻等媒體數據的傳輸。它使用TCP連接來傳輸數據,因為TCP提供了可靠的數據傳輸機制,確保數據的可靠性和缺陷,適合實時數據的傳輸。

RTSP也是一種用於實時媒體數據傳輸的協議,它用於控制媒體流的傳輸和播放。RTSP使用TCP連接來發送控制命令和接收媒體描述信息等控制數據,以確保控制信令的可靠傳輸。而媒體數據本身通常使用RTP(Real-time Transport Protocol)和RTCP(RTP Control Protocol)協議在UDP上進行傳輸,因為UDP具有較低的傳輸延遲,更適合實時媒體數據的傳輸。

因此,RTMP 和 RTSP 都是使用 TCP 進行控制信令傳輸,但它們在傳輸媒體數據的方式上有所不同。RTMP 使用 TCP 進行媒體數據的傳輸,而 RTSP 使用 RTP/RTCP 在 UDP 上進行媒體數據的傳輸傳輸。

那RTSP和RTMP是同樣的數據,如果RTSP設計於UDP傳輸,不是有順序可靠的檢查的動作,而RTMP沒有?

其中,RTSP(Real Time Streaming Protocol)和 RTMP(Real Time Messaging Protocol)在設計上有一些不同,儘管它們都是用於實時媒體傳輸的應用層協議。

RTSP 是一個控制協議,主要用於控制媒體流的傳輸和播放。RTSP 使用 TCP 連接發送控制命令並接收媒體描述信息等控制數據,以確保控制信令的可靠傳輸。而媒體數據本身通常使用RTP(Real-time Transport Protocol)和 RTCP(RTP Control Protocol)協議在 UDP 上進行傳輸。

RTP和RTCP是專門設計用於傳輸實時媒體數據的協議。RTP負責傳輸媒體數據,並提供時序、序列號等信息來保證數據順序和實時性。而RTCP則用於傳輸控制信息,例如網絡RTCP的一項功能就是檢查丟包率並做出相應的調整,以保證媒體數據的傳輸質量。

相比而言,RTMP 是一種用於實時數據傳輸的協議,主要用於音頻、視頻等媒體數據的傳輸。RTMP 使用 TCP 連接來傳輸數據,保證數據的可靠性和缺陷。RTMP 協議本身並並沒有專門設計用於檢查丟包率和調整傳輸速率的機制,這些功能通常需要在應用層實現。

綜上所述,RTSP 和 RTMP 在傳輸實時媒體數據的方式和設計上有所不同。RTSP 主要用於控制媒體流的傳輸和播放,使用 RTP/RTCP 在 UDP 上進行媒體數據傳輸,並帶有丟包而RTMP則主要用於傳輸媒體數據,使用TCP進行數據傳輸,對於丟包率和傳輸速率的控制通常需要應用層實現。

基於 TCP 的串流協議

  1. HTTP Live Streaming (HLS):由 Apple Inc. 提出的基於 HTTP 的串流協議,被廣泛使用在各種串流場景中。它將串流內容分割成一系列小型的基於 HTTP 的文件來傳遞給客戶端。
  2. MPEG-DASH(Dynamic Adaptive Streaming over HTTP):這是一種領先的元率串流技術,使高品質的串流媒體成為可能,通過HTTP傳輸。
  3. RTSP (Real-Time Streaming Protocol):雖然 RTSP 本身是一種控制協議,用於控制串流媒體服務器,但實際上,它的串流通常用 RTP 跨越 UDP 實現。然而,RTSP 也可以跨越 TCP 串流實現傳輸。
  4. RTMP (Real-Time Messaging Protocol):RTMP 是由 Adob​​e Systems 為 Flash 播放器播放音訊、視訊和數據而開發的開放協議,主要使用 TCP。
  5. Microsoft Smooth Streaming (MSS):這是微軟開發的一種前置串流協議,通過HTTP進行傳輸。
  6. HTTP/2:這是 HTTP 協議的第二個主要版本,它允許服務器將多個響應客戶端到客戶端,而無需客戶端明確的請求,這對於串流媒體來說是有利的。