2.3. RTCP的封裝
RTP需要RTCP為其服務品質提供保證,因此下面介紹一下RTCP的相關知識。
RTCP的主要功能是:服務品質的監視與反饋、媒體間的同步,以及多播組中成員的標識。在RTP會話期 間,各參與者周期性地傳送RTCP包。RTCP包中含有已發送的資料包的數量、丟失的資料包的數量等統計資料,因此,各參與者可以利用這些資訊動態地改變傳輸速率,甚至改變有效載荷類型。RTP和RTCP配合使用,它們能以有效反饋和最小的開銷使傳輸效率最佳化,因而特別適合傳送網上的即時資料。
從圖 1可以看到,RTCP也是用UDP來傳送的,但RTCP封裝的僅僅是一些控制資訊,因而分組很短,所以可以將多個RTCP分組封裝在一個UDP包中。RTCP有如下五種分組類型。
類型
縮寫表示
用途
200
SR(Sender Report)
發送端報告
201
RR(Receiver Report)
接收端報告
202
SDES(Source Description Items)
源點描述
203
BYE
結束傳輸
204
APP
特定應用
表 1 RTCP的5種分組類型
上述五種分組的封裝大同小異,下面只講述SR類型,而其它類型請參考RFC3550。
發送端報告分組SR(Sender Report)用來使發送端以多播方式向所有接收端報告發送情況。SR分組的主要內容有:相應的RTP流的SSRC,RTP流中最新產生的RTP分組的時間戳記和NTP,RTP流包含的分組數,RTP流包含的位元組數。SR包的封裝3所示。
圖 3 RTCP頭部的格式
版本(V):同RTP包頭域。
填充(P):同RTP包頭域。
接收報告計數器(RC):5位元,該SR包中的接收報告塊的數目,可以為零。
包類型(PT):8位元,SR包是200。
長度域(Length):16位元,其中存放的是該SR包以32位元為單位的總長度減一。
同步源(SSRC):SR包寄件者的同步源標識符。與對應RTP包中的SSRC一樣。
NTP Timestamp(Network time protocol)SR包發送時的絕對時間值。NTP的作用是同步不同的RTP媒體流。
RTP Timestamp:與NTP時間戳記對應,與RTP資料包中的RTP時間戳記具有相同的單位和隨機初始值。
Sender’s packet count:從開始發送包到產生這個SR包這段時間裡,寄件者發送的RTP資料包的總數. SSRC改變時,這個域清零。
Sender`s octet count:從開始發送包到產生這個SR包這段時間裡,寄件者發送的淨荷資料的總位元組數(不包括頭部和填充)。寄件者改變其SSRC時,這個域要清零。
同步源n的SSRC標識符:該報告塊中包含的是從該源接收到的包的統計資訊。
丟失率(Fraction Lost):表明從上一個SR或RR包發出以來從同步源n(SSRC_n)來的RTP資料包的丟失率。
累計的包丟失數目:從開始接收到SSRC_n的包到發送SR,從SSRC_n傳過來的RTP資料包的丟失總數。
收到的擴充最大序號:從SSRC_n收到的RTP資料包中最大的序號,
接收抖動(Interarrival jitter):RTP資料包接受時間的統計方差估計
上次SR時間戳記(Last SR,LSR):取最近從SSRC_n收到的SR包中的NTP時間戳記的中間32位元。如果目前還沒收到SR包,則該域清零。
上次SR以來的延時(Delay since last SR,DLSR):上次從SSRC_n收到SR包到發送本報告的延時。
2.4. RTP的會話過程
當應用程式建立一個RTP會話時,應用程式將確定一對目的傳輸地址。目的傳輸地址由一個網路地址和一對連接埠組成,有兩個連接埠:一個給RTP包,一個給RTCP包,使得RTP/RTCP資料能夠正確發送。RTP資料發向偶數的UDP連接埠,而對應的控制訊號RTCP資料發向相鄰的奇數UDP連接埠(偶數的UDP連接埠+1),這樣就構成一個UDP連接埠對。 RTP的發送過程如下,接收過程則相反。
1) RTP協議從上層接收流媒體資訊碼流(如H.263),封裝成RTP資料包;RTCP從上層接收控制資訊,封裝成RTCP控制包。
2) RTP將RTP 資料包發往UDP連接埠對中偶數連接埠;RTCP將RTCP控制包發往UDP連接埠對中的接收埠。