RTP協議的報文結構

bingtears發表於2009-06-30
RTP頭格式如圖structure所示:

開始12個八進位制出現在每個RTP包中,而CSRC標識列表僅出現在混合器插入時。各段含義如下:
①版本(V)
2位,標識RTP版本。
②填充標識(P)
1位,如設定填充位,在包尾將包含附加填充字,它不屬於有效載荷。填充的最後一個八進位制包含應該忽略的八進位制計數。某些加密演算法需要固定大小的填充字,或為在底層協議資料單元中攜帶幾個RTP包。
③擴充套件(X)
1位,如設定擴充套件位,固定頭後跟一個頭擴充套件。
④CSRC計數(CC)
4位,CSRC計數包括緊接在固定頭後CSRC識別符號個數。
⑤標記(M)
1位,標記解釋由設定定義,目的在於允許重要事件在包流中標記出來。設定可定義其他標示位,或通過改變位數量來指定沒有標記位。
⑥載荷型別(PT)
7位,記錄後面資料使用哪種 Codec , receiver 端找出相應的 decoder 解碼出來。
常用 types:見圖ctype所示:


⑦系列號
16位,系列號隨每個RTP資料包而增加1,由接收者用來探測包損失。系列號初值是隨機的,使對加密的文字攻擊更加困難。
⑧時標

32位,時標反映RTP資料包中第一個八進位制數的取樣時刻,取樣時刻必須從單調、線性增加的時鐘匯出,以允許同步與抖動計算。時標可以讓receiver端知道在正確的時間將資料播放出來。
由上圖可知,如果只有系列號,並不能完整按照順序的將data播放出來,因為如果data中間有一段是沒有資料的,只有系列號的話會造成錯誤,需搭配上讓它知道在哪個時間將data正確播放出來,如此我們才能播放出正確無誤的資訊。
⑨SSRC
32位,SSRC段標識同步源。此標識不是隨機選擇的,目的在於使同一RTP包連線中沒有兩個同步源有相同的SSRC標識。儘管多個源選擇同一個標識的概率很低,所有RTP實現都必須探測並解決衝突。如源改變源傳輸地址,也必須選擇一個新SSRC標識以避免插入成環行源。
⑩CSRC列表
0到15項,每項32位。CSRC列表表示包內的對載荷起作用的源。標識數量由CC段給出。如超出15個作用源,也僅標識15個。CSRC標識由混合器插入,採用作用源的SSRC標識。

相關文章