RTP頭簡介


參考:

RFC3550_RTP協議中文版 
rfc3550


RTP包主要由兩部分組成,head和payload,head最小12個字節,可擴展。

1 相關定義

1.1 RTP 包(RTP packet)

一種數據包,其組成部分有:一個固定 RTP 報頭,一個可能爲空的作用源(contributing sources)列表(見下文),以及負載數據。

1.2 RTP 負載(RTP payload)

通過 RTP 傳輸的包中的數據,例如,音頻樣本或壓縮好的視頻數據。

1.3 RTCP 包(RTCP packet)

一種控制包,其組成有兩部分:一個類似 RTP 包的固定報頭, 一個結構化的部分(該部分具體元素依不同 RTCP 包的類型而定)。

1.4 同步源(***C,Synchronization source)

RTP 包流的源,用 RTP 報頭中 32 位數值的***C 標識符進行標識, 使其不依賴於網絡地址。 一個同步源的所有包構成了相同計時和序列號空間的一部分, 這樣接收方就可以把一個同步源的包放在一起, 來進行重放。舉些同步源的例子,像來自同一信號源的包流的發送方,如麥克風、攝影機、RTP 混頻器(見下文)就是同步源。一個同步源可能隨着時間變化而改變其數據格式, 如音頻編碼。 ***C 標識符是一個隨機選取的值,它在特定的 RTP 會話中是全局唯一(globally unique)的(見章節8)。參與者並不需要在一個多媒體會議的所有 RTP 會話中,使用相同的 ***C 標識符;***C 標識符的綁定通過RTCP(見章節 6.5.1)。如果參與者在一個 RTP 會話中生成了多個流,例如來自多個攝影機,則每個攝影機都必須標識成單獨的同步源。

1.5 終端系統(End system)

一種應用程序,它產生髮送出的 RTP 包中內容,或者使用接收到的 RTP 包中內容。 在一個特定的 RTP 會話中, 一個終端系統可以扮演一個或多個同步源角色,但通常是一個。

1.6 作用源(CSRC,Contributing source )

若一個 RTP 包流的源,對由 RTP 混頻器生成的組合流起了作用,則它就是一個作用源。


2 RTP頭

wKioL1XvsPvRU1GLAAGxFTIAN4o987.jpg


前 12 個字節出現在每個 RTP 包中,僅僅在被混合器插入時,纔出現 CSRC 識別符列表。這 
些域有以下意義:

  • 版本(V):2 比特 此域定義了 RTP 的版本。此協議定義的版本是 2。(值 1 被 RTP 草案版本 
    使用,值 0 用在最初"vat"語音工具使用的協議中。)


  • 填充(P):1 比特 若填料比特被設置,則此包包含一到多個附加在末端的填充比特,填充比 
    特不算作負載的一部分。 填充的最後一個字節指明可以忽略多少個填充比特。 填充可能用於某些 
    具有固定長度的加密算法,或者用於在底層數據單元中傳輸多個 RTP 包。


  • 擴展(X):1 比特 若設置擴展比特,固定頭(僅)後面跟隨一個頭擴展。


  • CSRC 計數(CC):4 比特 CSRC 計數包含了跟在固定頭後面 CSRC 識別符的數目。


  • 標誌(M):1 比特 標誌的解釋由具體協議規定。它用來允許在比特流中標記重要的事件,如 
    幀邊界。


  • 負載類型(PT):7 比特 此域定義了負載的格式,由具體應用決定其解釋。協議可以規定負載 
    類型碼和負載格式之間一個默認的匹配。 其他的負載類型碼可以通過非 RTP 方法動態定義。 RTP 
    發送端在任意給定時間發出一個單獨的 RTP 負載類型;此域不用來複用不同的媒體流。


  • 序列號(sequence number):16 比特 每發送一個 RTP 數據包,序列號加 1,接收端可 
    以據此檢測丟包和重建包序列。 序列號的初始值是隨機的(不可預測),以使即便在源本身不加密 
    時(有時包要通過翻譯器,它會這樣做),對加密算法泛知的普通文本***也會更加困難。


  • 時間戳(timestamp) 32 比特時間戳反映了 RTP 數據包中第一個字節的採樣時間。時 
    鍾頻率依賴於負載數據格式,並在描述文件(profile)中進行描述。也可以通過 RTP 方法對負 
    載格式動態描述。時間戳可用來實現不同媒體流的同步


  • ***C:32 比特 用以識別同步源。標識符被隨機生成,以使在同一個 RTP 會話期中沒有 
    任何兩個同步源有相同的 ***C 識別符。儘管多個源選擇同一個 ***C 識別符的概率很低,所 
    有 RTP 實現工具都必須準備檢測和解決衝突。若一個源改變本身的源傳輸地址,必須選擇新的 
    ***C 識別符,以避免被當作一個環路源。

下面是抓包示例

143537365768.png


發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章