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