RTP/RTCP、TCP、UDP、RTMP、RTSP


 

OSI中的層 功能 TCP/IP協議族
應用層 文件傳輸,電子郵件,文件服務,虛擬終端 TFTP,FTP,HTTP,SNMP,SMTP,DNS,RIP,Telnet
表示層 數據格式化,代碼轉換,數據加密
會話層 解除或建立與別的結點的聯系
傳輸層 提供端對端的接口 TCP,UDP
網絡層 為數據包選擇路由 IP,ICMP,OSPF,BGP,IGMP,ARP,RARP
數據鏈路層 傳輸有地址的幀以及錯誤檢測功能 SLIP,CSIP,PPP,MTU,ARP,RARP
物理層 以二進制的數據形式在物理媒體上傳輸數據 ISO2110,IEEE802,IEEE802.2

本文摘抄自:

https://www.cnblogs.com/imystr/p/4026639.html

http://blog.csdn.net/fireroll/article/details/50725183

一、RTP/RTCP協議

RTP協議  

  RTP全名是Real-time Transport Protocol(實時傳輸協議)。

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

  RTP的應用環境

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

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

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

RTCP協議

  實時傳輸控制協議(Real-time ControlProtocol,RTCP)與RTP共同定義在1996年提出的RFC 1889中,是和RTP一起工作的控制協議。RTCP單獨運行在低層協議上,由低層協議提供數據與控制包的復用。在RTP會話期間,每個會話參與者周期性地向所有其他參與者發送RTCP控制信息包。對於RTP會話或者廣播,通常使用單個多目標廣播地址,屬於這個會話的所有RTP和RTCP信息包都使用這個多目標廣播地址,通過使用不同的端口號可把RTP信息包和RTCP信息包區分開來。

  是實時傳輸協議(RTP)的一個姐妹協議。RTCP為RTP媒體流提供信道外(out-of-band)控制。RTCP本身並不傳輸數據,但和RTP一起協作將多媒體數據打包和發送。RTCP定期在流多媒體會話參加者之間傳輸控制數據。RTCP的主要功能是為RTP所提供的服務質量(Quality of Service)提供反饋。

  RTCP執行下列四大功能:

  (1) 主要是提供數據發布的質量反饋。RTCP是作為RTP傳輸協議的一部分,與其他傳輸協議的流和阻塞控制有關。反饋對自適應編碼控制直接起作用,但IP多播經驗表明,從發送者收到反饋對診斷發送錯誤是至關重要的。給所有參加者發送接收反饋報告允許問題觀察者估計那些問題是局部的,還是全局的。諸如IP多播等發布機制使網絡服務提供商之類的團體可能接收反饋信息,充當第三方監控者來診斷網絡問題。反饋功能由RTCP發送者和接收者報告執行。

  (2)RTCP帶有稱作規范名字(CNAME)的RTP源持久傳輸層標識。如發現沖突,或程序重新啟動,既然SSRC標識可改變,接收者需要CNAME跟蹤參加者。接收者也需要CNAME與相關RTP連接中給定的幾個數據流聯系。

  (3)前兩種功能要求所有參加者發送RTCP包,因此,為了RTP擴展到大規模數量,速率必須受到控制。讓每個參加者給其他參加者發送控制包,就加大獨立觀察參加者數量。該數量用於計算包發送的速率。

  (4)可選功能是傳送最小連接控制信息,如辨識參加者。最可能用在“松散控制”連接,那里參加者自由進入或離開,沒有成員控制或參數協調,RTCP充當通往所有參加者的方便通道,但不必支持應用的所有控制通訊要求。

  在IP多播場合應用RTP時,前三個功能是必須的,推薦用於所有情形。RTP應用設計人員必須避免使用僅在單播模式下工作的機制,那將導致無法擴展規模。

二、RTP/RTCP與其他協議之間的關系

流媒體體系結構圖

RTP協議與其他協議的關系

RTP、TCP、UDP都屬於傳輸層協議;RTP也可以認為是介於應用層與傳輸層之間

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

三、RTMP協議

  RTMP(Real Time Messaging Protocol)實時消息傳送協議,是Adobe Systems公司為Flash播放器和服務器之間音頻、視頻和數據傳輸開發的開放協議。

  它有三種變種:
1)工作在TCP之上的明文協議,使用端口1935;
2)RTMPT封裝在HTTP請求之中,可穿越防火牆;
3)RTMPS類似RTMPT,但使用的是HTTPS連接;
    RTMP協議是被Flash用於對象,視頻,音頻的傳輸.這個協議建立在TCP協議或者輪詢HTTP協議之上;
    RTMP協議就像一個用來裝數據包的容器,這些數據既可以是AMF格式的數據,也可以是FLV中的視/音頻數據;
    一個單一的連接可以通過不同的通道傳輸多路網絡流.這些通道中的包都是按照固定大小的包傳輸的;

四、SRTP與SRTCP 協議

  參考文檔 RFC3711

  安全實時傳輸協議(Secure Real-time Transport Protocol或SRTP)是在實時傳輸協議(Real-time Transport Protocol或RTP)基礎上所定義的一個協議,旨在為單播和多播應用程序中的實時傳輸協議的數據提供加密、消息認證、完整性保證和重放保護。它是由David Oran(思科)和Rolf Blom(愛立信)開發的,並最早由IETF於2004年3月作為RFC3711發布。由於實時傳輸協議和可以被用來控制實時傳輸協議的會話的實時傳輸控制協議(RTP Control Protocol或RTCP)有着緊密的聯系,安全實時傳輸協議同樣也有一個伴生協議,它被稱為安全實時傳輸控制協議(Secure RTCP或SRTCP);安全實時傳輸控制協議為實時傳輸控制協議提供類似的與安全有關的特性,就像安全實時傳輸協議為實時傳輸協議提供的那些一樣。

  在使用實時傳輸協議或實時傳輸控制協議時,使不使用安全實時傳輸協議或安全實時傳輸控制協議是可選的;但即使使用了安全實時傳輸協議或安全實時傳輸控制協議,所有它們提供的特性(如加密和認證)也都是可選的,這些特性可以被獨立地使用或禁用。唯一的例外是在使用安全實時傳輸控制協議時,必須要用到其消息認證特性。

五、RTSP協議

參考文檔 RFC2326
  實時流傳輸協議(Real Time Streaming Protocol)是用來控制聲音或影像的多媒體串流協議,並允許同時多個串流需求控制,傳輸時所用的網絡通訊協定並不在其定義的范圍內,服務器端可以自行選擇使用TCP或UDP來傳送串流內容,它的語法和運作跟HTTP 1.1類似,但並不特別強調時間同步,所以比較能容忍網絡延遲。而前面提到的允許同時多個串流需求控制(Multicast),除了可以降低服務器端的網絡用量,更進而支持多方視訊會議(Video Conference)。因為與HTTP1.1的運作方式相似,所以代理服務器《Proxy》的快取功能《Cache》也同樣適用於RTSP,並因RTSP具有重新導向功能,可視實際負載情況來轉換提供服務的服務器,以避免過大的負載集中於同一服務器而造成延遲。

  是由Real Networks和Netscape共同提出的。該協議定義了一對多應用程序如何有效地通過IP網絡傳送多媒體數據。RTSP提供了一個可擴展框架,使實時數據,如音頻與視頻的受控、點播成為可能。數據源包括現場數據與存儲在剪輯中的數據。
該協議目的在於控制多個數據發送連接,為選擇發送通道,如UDP、多播UDP與TCP提供途徑,並為選擇基於RTP上發送機制提供方法。

RTSP和RTP的關系

  RTP不象http和ftp可完整的下載整個影視文件,它是以固定的數據率在網絡上發送數據,客戶端也是按照這種速度觀看影視文件,當影視畫面播放過后,就不可以再重復播放,除非重新向服務器端要求數據。

  RTSP與RTP最大的區別在於:RTSP是一種雙向實時數據傳輸協議,它允許客戶端向服務器端發送請求,如回放、快進、倒退等操作。

  當然,RTSP可基於RTP來傳送數據,還可以選擇TCP、UDP、組播UDP等通道來發送數據,具有很好的擴展性。
它時一種類似與http協議的網絡應用層協議。

RTP:實時傳輸協議(Real-time Transport Protocol)

  RTP/RTCP是實際傳輸數據的協議;

  RTP傳輸音頻/視頻數據,如果是PLAY,Server發送到Client端,如果是RECORD,可以由Client發送到Server整個RTP協議由兩個密切相關的部分組成:RTP數據協議和RTP控制協議(即RTCP);

  RTCP:RTCP包括Sender Report和Receiver Report,用來進行音頻/視頻的同步以及其他用途,是一種控制協議;

RTSP:實時流協議(Real Time Streaming Protocol,RTSP)

  RTSP的請求主要有DESCRIBE,SETUP,PLAY,PAUSE,TEARDOWN,OPTIONS等,顧名思義可以知道起對話和控制作用;

  RTSP的對話過程中SETUP可以確定RTP/RTCP使用的端口,PLAY/PAUSE/TEARDOWN可以開始或者停止RTP的發送,等等;

六、TCP與UDP協議

TCP協議

  TCP,全稱Transfer Control Protocol,中文名為傳輸控制協議,它工作在OSI的傳輸層,提供面向連接的可靠傳輸服務。

  TCP的工作主要是建立連接,然后從應用層程序中接收數據並進行傳輸。TCP采用虛電路連接方式進行工作,在發送數據前它需要在發送方和接收方建立一個連接,數據在發送出去后,發送方會等待接收方給出一個確認性的應答,否則發送方將認為此數據丟失,並重新發送此數據。

  TCP報頭

TCP報頭總長最小為20個字節,其報頭結構如下圖所示;

  比特0             比特15   比特16             比特31

源端口(16)

目的端口(16)

序列號(32)

確認號(32)

TCP偏移量(4)

保留(6)

標志(6)

窗口(16)

校驗和(16)

緊急(16)

選項(0或32)

數據(可變)

       

源端口:指定了發送端的端口

目的端口:指定了接受端的端口號

序號:指明了段在即將傳輸的段序列中的位置

確認號:規定成功收到段的序列號,確認序號包含發送確認的一端所期望收到的下一個序號

TCP偏移量:指定了段頭的長度。段頭的長度取決與段頭選項字段中設置的選項

保留:指定了一個保留字段,以備將來使用

標志:SYN、ACK、PSH、RST、URG、FIN

      SYN: 表示同步

      ACK: 表示確認

      PSH: 表示盡快的將數據送往接收進程

      RST: 表示復位連接

      URG: 表示緊急指針

      FIN: 表示發送方完成數據發送

窗口:指定關於發送端能傳輸的下一段的大小的指令

校驗和:校驗和包含TCP段頭和數據部分,用來校驗段頭和數據部分的可靠性

緊急:指明段中包含緊急信息,只有當U R G標志置1時緊急指針才有效

選項:指定了公認的段大小,時間戳,選項字段的末端,以及指定了選項字段的邊界選項

TCP工作原理

TCP連接建立:TCP的連接建立過程又稱為TCP三次握手。首先發送方主機向接收方主機發起一個建立連接的同步(SYN)請求;接收方主機在收到這個請求后向送方主機回復一個同步/確認(SYN/ACK)應答;發送方主機收到此包后再向接收方主機發送一個確認(ACK),此時TCP連接成功建立;

TCP連接關閉:發送方主機和目的主機建立TCP連接並完成數據傳輸后,會發送一個將結束標記置1的數據包,以關閉這個TCP連接,並同時釋放該連接占用的緩沖區空間;    TCP重置:TCP允許在傳輸的過程中突然中斷連接,這稱為TCP重置;

TCP數據排序和確認:TCP是一種可靠傳輸的協議,它在傳輸的過程中使用序列號和確認號來跟蹤數據的接收情況;

TCP重傳:在TCP的傳輸過程中,如果在重傳超時時間內沒有收到接收方主機對某數據包的確認回復,發送方主機就認為此數據包丟失,並再次發送這個數據包給接收方,這稱為TCP重傳;

TCP延遲確認:TCP並不總是在接收到數據后立即對其進行確認,它允許主機在接收數據的同時發送自己的確認信息給對方。

TCP數據保護(校驗和):TCP是可靠傳輸的協議,它提供校驗和計算來實現數據在傳輸過程中的完整性。

UDP協議

  UDP協議是英文UserDatagramProtocol的縮寫,即用戶數據報協議,主要用來支持那些需要在計算機之間傳輸數據的網絡應用。包括網絡視頻會議系統在內的眾多的客戶/服務器模式的網絡應用都需要使用UDP協議。UDP協議從問世至今已經被使用了很多年,雖然其最初的光彩已經被一些類似協議所掩蓋,但是即使是在今天,UDP仍然不失為一項非常實用和可行的網絡傳輸層協議。 
  與我們所熟知的TCP(傳輸控制協議)協議一樣,UDP協議直接位於IP(網際協議)協議的頂層。根據OSI(開放系統互連)參考模型,UDP和TCP都屬於傳輸層協議。 
  UDP協議的主要作用是將網絡數據流量壓縮成數據報的形式。一個典型的數據報就是一個二進制數據的傳輸單位。每一個數據報的前8個字節用來包含報頭信息,剩余字節則用來包含具體的傳輸數據。

七、RTP/RTCP、RTMP、TCP、UDP協議對比

  TCP為點對點的協議,這意味着各個客戶需要分開客戶機/服務器鏈接,因而無法在網絡級實現對多個客戶機的數據廣播。如果有一個數據流必須同時被傳送到多個客戶機,服務器必須傳送數據流的副本到各個客戶機,TCP能夠根據網絡帶寬和擁擠程度動態地調節傳送速度並重新發送丟失的數據包,這樣雖然保證了數據傳輸的可靠性,但是對服務器資源耗費較大,在數據流大的場合難以保證數據流傳輸的實時性。

  UDP為不可靠傳輸協議,在發送端,UDP傳送數據的速度僅僅是受應用程序生成數據的速度,計算機的能力和傳輸帶寬的限制;在接收端,UDP把每個消息段放在隊列中,應用程序每次從隊列中讀一個消息段;UDP協議不需要維護連接狀態,也不認為每個數據包都必須到達接受端,因此網絡負荷比TCP小,傳輸速度也要比TCP快;但在網絡越擁擠時,越有更多的數據包丟失。

  UDP和TCP協議的主要區別是兩者在如何實現信息的可靠傳遞方面不同TCP協議中包含了專門的傳遞保證機制,當數據接收方收到發送方傳來的信息時,會自動向發送方發出確認消息;發送方只有在接收到該確認消息之后才繼續傳送其它信息,否則將一直等待直到收到確認信息為止。

  所以TCP比UDP多了建立連接的時間。相對UDP而言,TCP具有更高的安全性和可靠性。TCP協議傳輸的大小不限制,一旦連接被建立,雙方可以按照一定的格式傳輸大量的數據,而UDP是一個不可靠的協議,大小有限制,每次不能超過64K。

  相對於TCP協議,UDP協議的另外一個不同之處在於如何接收突法性的多個數據報。不同於TCP,UDP並不能確保數據的發送和接收順序。

  RTP位於UDP之上,UDP雖然沒有TCP那么可靠,並且無法保證實時業務的服務質量,需要RTCP實時監控數據傳輸和服務質量,但是,由於UDP的傳輸時延低於TCP,能與視頻和音頻很好匹配。因此,在實際應用中,RTP/RTCP/UDP用於音頻/視頻媒體,而TCP用於數據和控制信令的傳輸。

三者的性能對比見表

 

協議名稱

 

復雜性

連接建

立時間

 

可靠性

是否確保數據報發送和接受順序

 

實時性

 

適用范圍

是否支持組播

 

RTP/RTCP

實時音視

頻媒體傳輸

支持

TCP

數據和控制信令傳輸

不支持

UDP

音視頻媒體傳輸

支持

 

  RTMP協議是一個專門為高效傳輸視頻,音頻和數據而設計的協議。它通過建立一個二進制TCP連接或者連接HTTP隧道實現實時的視頻和聲音傳輸。

  RTMP比傳統媒介服務器流出的媒介協議支持更多。它支持可能包含聲音,影像和腳本數據從服務器到客戶和從客戶到服務器多條線路的動態傳輸。RTMP對聲音、影像和腳本數據分別處理。

  聲音和視頻數據被分開地緩沖在服務器中。如果聲音數據在聲音緩沖器中達到某一極限,所有在緩沖器中的數據將被丟掉,並且最近到達的數據被允許開始收集在緩沖中並被送到各個客戶。視頻數據被以相似的方式處理,不同是當新的關鍵幀到達時,緩沖器中數據才被清除。在丟掉舊的幀數據時,如果發現客戶端的數據有誤,則將新舊兩個不同的幀進行擬合。

  RTMP對數據給予不同的優先級別。在實時交談中,聲音是最重要的,影像給予低優先級,而腳本數據被給予的優先權介於聲音和影像中間。

  RTMP協議可以創建多個數據流,但是每個數據流只能有一個方向。使用RTMP可以構建這樣的一個系統,客戶端可以同時與RTMP服務器和應用服務器進行交互,使得服務端的負荷得以分散,雖然在這種改進的系統結構中,RTMP服務器的性能要求比較高。

八、其他協議

  HTTP協議,全稱HyperText Transfer Protocol,中文名為超文本傳輸協議;

  MMS協議,全稱Microsoft Media Server Protocol,中文名為微軟媒體服務器協議;

  HLS協議,全稱HTTP Live Streaming, 是蘋果公司(Apple Inc.)實現的基於HTTP的流媒體傳輸協議;


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM