RTP是一種提供端對端傳輸服務的實時傳輸協(xié)議,用來支持在單目標廣播和多目標廣播網絡服務中傳輸實時數據,而實時數據的傳輸則由RTCP協(xié)議來監(jiān)視和控制。 RTP定義在RFC 使用RTP協(xié)議的應用程序運行在RTP之上,而執(zhí)行RTP的程序運行在UDP的上層,目的是為了使用UDP的端口號和檢查和。如圖16-12所示,RTP可以看成是傳輸層的子層。由多媒體應用程序生成的聲音和電視數據塊被封裝在RTP信息包中,每個RTP信息包被封裝在UDP消息段中,然后再封裝在IP數據包中。 1889中。信息包的結構包含廣泛用于多媒體的若干個域,包括聲音點播(audio-on-demand)、影視點播(video on demand)、因特網電話(Internet telephony)和電視會議(videoconferencing)。RTP的規(guī)格沒有對聲音和電視的壓縮格式制定標準,它可以被用來傳輸普通格式的文件。例如,WAV或者GSM(Global System for Mobile communications)格式的聲音、MPEG-1和MPEG-2的電視,也可以用來傳輸專有格式存儲的聲音和電視文件。
圖16-12 RTP是傳輸層上的協(xié)議 從應用開發(fā)人員的角度來看,可把RTP執(zhí)行程序看成是應用程序的一部分,因為開發(fā)人員必需把RTP集成到應用程序中。在發(fā)送端,開發(fā)人員必需把執(zhí)行RTP協(xié)議的程序寫入到創(chuàng)建RTP信息包的應用程序中,然后應用程序把RTP信息包發(fā)送到UDP的套接接口(socket interface),如圖16-13所示;同樣,在接收端,RTP信息包通過UDP套接接口輸入到應用程序,因此開發(fā)人員必需把執(zhí)行RTP協(xié)議的程序寫入到從RTP信息包中抽出媒體數據的應用程序。
圖16-13 RTP和UDP之間的接口 現以用RTP傳輸聲音為例來說明它的工作過程。假設音源的聲音是64 kb/s的PCM編碼聲音,并假設應用程序取20毫秒的編碼數據為一個數據塊(chunk),即在一個數據塊中有160個字節(jié)的聲音數據。應用程序需要為這塊聲音數據添加RTP標題生成RTP信息包,這個標題包括聲音數據的類型、順序號和時間戳。然后RTP信息包被送到UDP套接接口,在那里再被封裝在UDP信息包中。在接收端,應用程序從套接接口處接收RTP信息包,并從RTP信息包中抽出聲音數據塊,然后使用RTP信息包的標題域中的信息正確地譯碼和播放聲音。 如果應用程序不使用專有的方案來提供有效載荷類型(payload type)、順序號或者時間戳,而是使用標準的RTP協(xié)議,應用程序就更容易與其他的網絡應用程序配合運行,這是大家都希望的事情。例如,如果有兩個不同的公司都在開發(fā)因特網電話軟件,他們都把RTP合并到他們的產品中,這樣就有希望:使用不同公司電話軟件的用戶之間能夠進行通信。 這里需要強調的是,RTP本身不提供任何機制來確保把數據及時遞送到接收端或者確保其他的服務質量,它也不擔保在遞送過程中不丟失信息包或者防止信息包的次序不被打亂。的確,RTP的封裝只是在系統(tǒng)端才能看到,中間的路由器并不區(qū)分那個IP數據報是運載RTP信息包的。 RTP允許給每個媒體源分配一個單獨的RTP信息包流,例如,攝像機或者麥克風。例如,有兩個團體參與的電視會議,這就可能打開4個信息包流:兩臺攝像機傳送電視流和兩個麥克風傳送聲音流。然而,許多流行的編碼技術,包括MPEG-1和MPEG-2在編碼過程中都把聲音和電視圖像捆綁在一起以形成單一的數據流,一個方向就生成一個RTP信息包流。 RTP信息包沒有被限制只可應用于單目標廣播,它們也可以在一對多(one-to-many)的多目標廣播樹或者在多對多(many-to-many)的多目標廣播樹上傳送。例如,多對多的多目標廣播,在這種應用場合下,所有發(fā)送端通常都把他們的RTP信息包流發(fā)送到具有相同多目標廣播地址的多目標廣播樹上。 16.6.2 RTP信息包標題域 RTP標題由4個信息包標題域和其他域組成:有效載荷類型(payload type)域,順序號(sequence number)域,時間戳(timestamp)域和同步源標識符(Synchronization Source Identifier)域等。RTP信息包的標題域的結構如下圖所示:
1. 有效載荷類型 RTP信息包中的有效載荷域(Payload Type Field)的長度為7位,因此RTP可支持128種不同的有效載荷類型。對于聲音流,這個域用來指示聲音使用的編碼類型,例如PCM、自適應增量調制或線性預測編碼等等。如果發(fā)送端在會話或者廣播的中途決定改變編碼方法,發(fā)送端可通過這個域來通知接收端。表16-01列出了目前RTP所能支持的聲音有效載荷類型。 表16-01 目前RTP所能支持的聲音有效載荷類型
對電視流,有效載荷類型可以用來指示電視編碼的類型,例如motion JPEG, MPEG-1,MPEG-2或者H.231等等。發(fā)送端也可以在會話或者期間隨時改變電視的編碼方法。表16-02列出了目前RTP所能支持的某些電視有效載荷類型。 表16-02 目前RTP所能支持的聲音有效載荷類型
2. 順序號 順序號(Sequence Number Field)域的長度為16位。每發(fā)送一個RTP信息包順序號就加1,接收端可以用它來檢查信息包是否有丟失以及按順序號處理信息包。例如,接收端的應用程序接收到一個RTP信息包流,這個RTP信息包在順序號86和89之間有一個間隔,接收端就知道信息包87和88已經丟失,并且采取措施來處理丟失的數據。 3. 時間戳 時間戳(Timestamp)域的長度為32字節(jié)。它反映RTP數據信息包中第一個字節(jié)的采樣時刻(時間)。接收端可以利用這個時間戳來去除由網絡引起的信息包的抖動,并且在接收端為播放提供同步功能。 4. 同步源標識符 同步源標識符(Synchronization Source Identifier,SSRC)域的長度為32位。它用來標識RTP信息包流的起源,在RTP會話或者期間的每個信息包流都有一個清楚的SSRC。SSRC不是發(fā)送端的IP地址,而是在新的信息包流開始時源端隨機分配的一個號碼。 16.6.3 實時傳輸控制協(xié)議 實時傳輸控制協(xié)議(Real-time Control Protocol,RTCP)也定義在1996年提出的RFC 1889中。多媒體網絡應用把RTCP和RTP一起使用,尤其是在多目標廣播中更具吸引力。當從一個或者多個發(fā)送端向多個接收端廣播聲音或者電視時,也就是在RTP會話期間,每個參與者周期性地向所有其他參與者發(fā)送RTCP控制信息包,如圖16-14所示。RTCP用來監(jiān)視服務質量和傳送有關與會者的信息。對于RTP會話或者廣播,通常使用單個多目標廣播地址,屬于這個會話的所有RTP和RTCP信息包都使用這個多目標廣播地址,通過使用不同的端口號可把RTP信息包和RTCP信息包區(qū)分開來。 圖16-14 每個參與者周期性地發(fā)送RTCP控制信息包 RTCP的主要功能是為應用程序提供會話質量或者廣播性能質量的信息。每個RTCP信息包不封裝聲音數據或者電視數據,而是封裝發(fā)送端和/或者接收端的統(tǒng)計報表。這些信息包括發(fā)送的信息包數目、丟失的信息包數目和信息包的抖動等情況,這些反饋信息對發(fā)送端、接收端或者網絡管理員都是很有用的。RTCP規(guī)格沒有指定應用程序應該使用這個反饋信息做什么,這完全取決于應用程序開發(fā)人員。例如,發(fā)送端可以根據反饋信息來修改傳輸速率,接收端可以根據反饋信息判斷問題是本地的、區(qū)域性的還是全球性的,網絡管理員也可以使用RTCP信息包中的信息來評估網絡用于多目標廣播的性能。 16.6.4 實時流放協(xié)議 實時流放協(xié)議(Real-Time Streaming Protocol,RTSP)是一個剛開始開發(fā)的協(xié)議,它的設想描述在RFC 播放的數據流被分成許多信息包,信息包的大小很適用于客戶機和服務器之間的帶寬。當客戶機已經接收到足夠多的信息包之后,用戶軟件就可開始播放一個信息包,同時對另一個信息包解壓縮和接收第三個信息包。這樣用戶就不需要把整個媒體文件從服務器上下載之后就可立即播放。廣播源可以是現場的數據流也可以是存儲的數據流。 RTSP協(xié)議想要提供控制多種應用數據傳送的功能,提供一種選擇傳送通道的方法,例如UDP, TCP, IP多目標廣播通道,以及提供一種基于RTP協(xié)議的遞送方法。正在設計的RTSP將工作在RTP的上層,用來控制和傳送實時的內容。 RTSP能夠與資源保留協(xié)議一起使用,用來設置和管理保留帶寬的流式會話或者廣播。 2326文件中。RTSP是應用級的實時流放協(xié)議,它主要目標是為單目標廣播和多目標廣播上的流式多媒體應用提供牢靠的播放性能,以及支持不同廠家提供的客戶機和服務機之間的協(xié)同工作能力。http://publishblog.blogchina.com/blog/tb.b?diaryID=5335330 |
|
來自: iversion > 《network相關》