RTP協議的概念和結構
在網絡傳輸中,我們來將誒少一下RTP協議。那么對于這個協議的一些定義和概念我們來簡單看一下。實時傳輸協議(RTP)為數據提供了具有實時特征的端對端傳送服務,如在組播或單播網絡服務下的交互式視頻音頻或模擬數據。應用程序通常在 UDP 上運行RTP以便使用其多路結點和校驗服務;這兩種協議都提供了傳輸層協議的功能。但是RTP可以與其它適合的底層網絡或傳輸協議一起使用。如果底層網絡提供組播方式,那么RTP可以使用該組播表傳輸數據到多個目的地。
RTP本身并沒有提供按時發送機制或其它服務質量(QoS)保證,它依賴于低層服務去實現這一過程。RTP協議并不保證傳送或防止無序傳送,也不確定底層網絡的可靠性。RTP實行有序傳送, RTP中的序列號允許接收方重組發送方的包序列,同時序列號也能用于決定適當的包位置,例如:在視頻解碼中,就不需要順序解碼。
RTP協議由兩個緊密鏈接部分組成:
RTP―傳送具有實時屬性的數據;
RTP控制協議(RTCP) ― 監控服務質量并傳送正在進行的會話參與者的相關信息。RTCP 第二方面的功能對于“松散受控”會話是足夠的,也就是說,在沒有明確的成員控制和組織的情況下,它并不非得用來支持一個應用程序的所有控制通信請求。
協議結構
1 | 2 | 3 | 8 | 9 | 16bit |
V | P | X | CSRC Count | M | Payload Type |
Sequence number | Timestamp | ||||
SSRC | CSRC (variable 0 – 15 items 32bits each) |
P ― 間隙(Padding)。設置時,數據包包含一個或多個附加間隙位組,其中這部分不屬于有效載荷。
X ― 擴展位。設置時,在固定頭后面,根據指定格式設置一個擴展頭。
CSRC Count ― 包含 CSRC 標識符(在固定頭后)的編號。
M ― 標記。標記由 Profile 文件定義。允許重要事件如幀邊界在數據包流中進行標記。
Payload Type ― 識別RTP有效載荷的格式,并通過應用程序決定其解釋。Profile 文件規定了從 Payload 編碼到 Payload 格式的缺省靜態映射。另外的 Payload Type 編碼可能通過非RTP方法實現動態定義。
Sequence Number ― 每發送一個RTP數據包,序列號增加1。接收方可以依次檢測數據包的丟失并恢復數據包序列。
Timestamp ― 反映RTP數據包中的第一個八位組的采樣時間。采樣時間必須通過時鐘及時提供線性無變化增量獲取,以支持同步和抖動計算。
SSRC ― 同步源。該標識符隨機選擇,旨在確保在同一個RTP協議會話中不存在兩個同步源具有相同的 SSRC 標識符。
CSRC ― 貢獻源標識符。識別該數據包中的有效載荷的貢獻源。