<menu id="w8yyk"><menu id="w8yyk"></menu></menu>
  • <dd id="w8yyk"><nav id="w8yyk"></nav></dd>
    <menu id="w8yyk"></menu>
    <menu id="w8yyk"><code id="w8yyk"></code></menu>
    <menu id="w8yyk"></menu>
    <xmp id="w8yyk">
    <xmp id="w8yyk"><nav id="w8yyk"></nav>
  • 網站首頁 > 物聯資訊 > 技術分享

    RTP協議分析

    2016-09-28 00:00:00 廣州睿豐德信息科技有限公司 閱讀
    睿豐德科技 專注RFID識別技術和條碼識別技術與管理軟件的集成項目。質量追溯系統、MES系統、金蝶與條碼系統對接、用友與條碼系統對接

    目錄(?)[-]

    1. 第1章     RTP概述
      1. RTP是什么
      2. RTP的應用環境
      3. 相關概念
        1. 流媒體
    2. 第2章     RTP詳解
      1. RTP的協議層次
        1. 傳輸層的子層
        2. 應用層的一部分
      2. RTP的封裝
      3. RTCP的封裝
      4. RTP的會話過程
    3. 第3章     相關的協議
      1. 實時流協議RTSP
      2. 資源預定協議RSVP
    4. 第4章     常見的疑問
      1. 怎樣重組亂序的數據包
      2. 怎樣獲得數據包的時序
      3. 聲音和圖像怎么同步
      4. 接收緩沖和播放緩沖的作用
    5. 第5章     實現方案
    6. 第6章     參考資料
     

    RTP協議分析

    第1章.     RTP概述

    1.1.  RTP是什么

    RTP全名是Real-time Transport Protocol(實時傳輸協議)。它是IETF提出的一個標準,對應的RFC文檔為RFC3550(RFC1889為其過期版本)。RFC3550不僅定義了RTP,而且定義了配套的相關協議RTCP(Real-time Transport Control Protocol,即實時傳輸控制協議)。RTP用來為IP網上的語音、圖像、傳真等多種需要實時傳輸的多媒體數據提供端到端的實時傳輸服務。RTP為Internet上端到端的實時傳輸提供時間信息和流同步,但并不保證服務質量,服務質量由RTCP來提供。

    1.2.  RTP的應用環境

    RTP用于在單播或多播網絡中傳送實時數據。它們典型的應用場合有如下幾個。

    簡單的多播音頻會議。語音通信通過一個多播地址和一對端口來實現。一個用于音頻數據(RTP),另一個用于控制包(RTCP)。

    音頻和視頻會議。如果在一次會議中同時使用了音頻和視頻會議,這兩種媒體將分別在不同的RTP會話中傳送,每一個會話使用不同的傳輸地址(IP地址+端口)。如果一個用戶同時使用了兩個會話,則每個會話對應的RTCP包都使用規范化名字CNAME(Canonical Name)。與會者可以根據RTCP包中的CNAME來獲取相關聯的音頻和視頻,然后根據RTCP包中的計時信息(Network time protocol)來實現音頻和視頻的同步。

    翻譯器和混合器。翻譯器和混合器都是RTP級的中繼系統。翻譯器用在通過IP多播不能直接到達的用戶區,例如發送者和接收者之間存在防火墻。當與會者能接收的音頻編碼格式不一樣,比如有一個與會者通過一條低速鏈路接入到高速會議,這時就要使用混合器。在進入音頻數據格式需要變化的網絡前,混合器將來自一個源或多個源的音頻包進行重構,并把重構后的多個音頻合并,采用另一種音頻編碼進行編碼后,再轉發這個新的RTP包。從一個混合器出來的所有數據包要用混合器作為它們的同步源(SSRC,見RTP的封裝)來識別,可以通過貢獻源列表(CSRC表,見RTP的封裝)可以確認談話者。

    1.3.  相關概念

    1.3.1.  流媒體

    流媒體是指Internet上使用流式傳輸技術的連續時基媒體。當前在Internet上傳輸音頻和視頻等信息主要有兩種方式:下載和流式傳輸兩種方式。

    下載情況下,用戶需要先下載整個媒體文件到本地,然后才能播放媒體文件。在視頻直播等應用場合,由于生成整個媒體文件要等直播結束,也就是用戶至少要在直播結束后才能看到直播節目,所以用下載方式不能實現直播。

    流式傳輸是實現流媒體的關鍵技術。使用流式傳輸可以邊下載邊觀看流媒體節目。由于Internet是基于分組傳輸的,所以接收端收到的數據包往往有延遲和亂序(流式傳輸構建在UDP上)。要實現流式傳輸,就是要從降低延遲和恢復數據包時序入手。在發送端,為降低延遲,往往對傳輸數據進行預處理(降低質量和高效壓縮)。在接收端為了恢復時序,采用了接收緩沖;而為了實現媒體的流暢播放,則采用了播放緩沖。

    使用接收緩沖,可以將接收到的數據包緩存起來,然后根據數據包的封裝信息(如包序號和時戳等),將亂序的包重新排序,最后將重新排序了的數據包放入播放緩沖播放。

    為什么需要播放緩沖呢?容易想到,由于網絡不可能很理想,并且對數據包排序需要處理時耗,我們得到排序好的數據包的時間間隔是不等的。如果不用播放緩沖,那么播放節目會很卡,這叫時延抖動。相反,使用播放緩沖,在開始播放時,花費幾十秒鐘先將播放緩沖填滿(例如PPLIVE),可以有效地消除時延抖動,從而在不太損失實時性的前提下實現流媒體的順暢播放。

    到目前為止,Internet 上使用較多的流式視頻格式主要有以下三種:RealNetworks 公司的RealMedia ,Apple 公司的QuickTime 以及Microsoft 公司的Advanced Streaming Format (ASF) 。

    上面在談接收緩沖時,說到了流媒體數據包的封裝信息(包序號和時戳等),這在后面的RTP封裝中會有體現。另外,RealMedia這些流式媒體格式只是編解碼有不同,但對于RTP來說,它們都是待封裝傳輸的流媒體數據而沒有什么不同。

    第2章.     RTP詳解

    2.1.  RTP的協議層次

    2.1.1.  傳輸層的子層

    RTP(實時傳輸協議),顧名思義它是用來提供實時傳輸的,因而可以看成是傳輸層的一個子層。圖 1給出了流媒體應用中的一個典型的協議體系結構。

    RFID設備管理軟件

    圖 1 流媒體體系結構

    從圖中可以看出,RTP被劃分在傳輸層,它建立在UDP上。同UDP協議一樣,為了實現其實時傳輸功能,RTP也有固定的封裝形式。RTP用來為端到端的實時傳輸提供時間信息和流同步,但并不保證服務質量。服務質量由RTCP來提供。這些特點,在第4章可以看到。

    2.1.2.  應用層的一部分

    不少人也把RTP歸為應用層的一部分,這是從應用開發者的角度來說的。操作系統中的TCP/IP等協議棧所提供的是我們最常用的服務,而RTP的實現還是要靠開發者自己。因此從開發的角度來說,RTP的實現和應用層協議的實現沒不同,所以可將RTP看成應用層協議。

    RTP實現者在發送RTP數據時,需先將數據封裝成RTP包,而在接收到RTP數據包,需要將數據從RTP包中提取出來。

    2.2.  RTP的封裝

    一個協議的封裝是為了滿足協議的功能需求的。從前面提出的功能需求,可以推測出RTP封裝中應該有同步源和時戳等字段,但更為完整的封裝是什么樣子呢?請看圖2。

    RFID設備管理軟件

    圖 2 RTP的頭部格式

    版本號(V):2比特,用來標志使用的RTP版本。

    填充位(P):1比特,如果該位置位,則該RTP包的尾部就包含附加的填充字節。

    擴展位(X):1比特,如果該位置位的話,RTP固定頭部后面就跟有一個擴展頭部。

    CSRC計數器(CC):4比特,含有固定頭部后面跟著的CSRC的數目。

    標記位(M):1比特,該位的解釋由配置文檔(Profile)來承擔.

    載荷類型(PT):7比特,標識了RTP載荷的類型。

    序列號(SN):16比特,發送方在每發送完一個RTP包后就將該域的值增加1,接收方可以由該域檢測包的丟失及恢復包序列。序列號的初始值是隨機的。

    時間戳:32比特,記錄了該包中數據的第一個字節的采樣時刻。在一次會話開始時,時間戳初始化成一個初始值。即使在沒有信號發送時,時間戳的數值也要隨時間而不斷地增加(時間在流逝嘛)。時間戳是去除抖動和實現同步不可缺少的。

    同步源標識符(SSRC):32比特,同步源就是指RTP包流的來源。在同一個RTP會話中不能有兩個相同的SSRC值。該標識符是隨機選取的 RFC1889推薦了MD5隨機算法。

    貢獻源列表(CSRC List):0~15項,每項32比特,用來標志對一個RTP混合器產生的新包有貢獻的所有RTP包的源。由混合器將這些有貢獻的SSRC標識符插入表中。SSRC標識符都被列出來,以便接收端能正確指出交談雙方的身份。

    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所示。

    RFID設備管理軟件

    圖 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端口對中的接收端口。

    第3章.     相關的協議

    3.1.  實時流協議RTSP

    實時流協議RTSP(Real-Time Streaming Protocol)是IETF提出的協議,對應的RFC文檔為RFC2362。

    從圖 1可以看出,RTSP是一個應用層協議(TCP/IP網絡體系中)。它以C/S模式工作,它是一個多媒體播放控制協議,主要用來使用戶在播放流媒體時可以像操作本地的影碟機一樣進行控制,即可以對流媒體進行暫停/繼續、后退和前進等控制。

    3.2.  資源預定協議RSVP

    資源預定協議RSVP(Resource Reservation Protocol)是IETF提出的協議,對應的RFC文檔為RFC2208。

    從圖 1可以看出,RSVP工作在IP層之上傳輸層之下,是一個網絡控制協議。RSVP通過在路由器上預留一定的帶寬,能在一定程度上為流媒體的傳輸提供服務質量。在某些試驗性的系統如網絡視頻會議工具vic中就集成了RSVP。

    第4章.     常見的疑問

    4.1.  怎樣重組亂序的數據包

    可以根據RTP包的序列號來排序。

    4.2.  怎樣獲得數據包的時序

    可以根據RTP包的時間戳來獲得數據包的時序。

    4.3.  聲音和圖像怎么同步

    根據聲音流和圖像流的相對時間(即RTP包的時間戳),以及它們的絕對時間(即對應的RTCP包中的RTCP),可以實現聲音和圖像的同步。

    4.4.  接收緩沖和播放緩沖的作用

    如1.3.1所述,接收緩沖用來排序亂序了的數據包;播放緩沖用來消除播放的抖動,實現等時播放。

    第5章.     實現方案

    ID

    Protocol

    Captured contents

    Account

    password

    Local telephone

    number

    Opponents

    Telephone

    Number

    audio

    login

    logout

    36

    Rtp

     

     

     

     

     

     

    表 2 協議分析要求

    表 2給出了協議分析要求。容易看出要獲取RTP音頻包中的音頻信息很容易,直接將RTP包的包頭去掉即可。當然,要成功地播放解碼獲取到的音頻流,需要知道其編碼,這可從RTP包包頭的有效載荷類型字段(PT)獲得。

    第6章.     參考資料

    [1]      RFC文檔:RFC3550對應RTP/RTCP,RFC2362對應RTSP,RFC2208對應RSVP

    [2]      http://www.faqs.org/rfcs/,上面有全面的英文RFC文檔

    [3]      http://www.cnpaf.net/,有不少協議分析文檔,也有中文RFC文檔,但質量不是特別高。

    RFID管理系統集成商 RFID中間件 條碼系統中間層 物聯網軟件集成
    最近免费观看高清韩国日本大全