轉載自:http://shenwy001.blog.163.com/blog/static/162586807201033091135982/
1, TCP為點對點的協議,這意味著各個客戶需要分開客戶機/服務器鏈接,因而無法在網絡級實現對多個客戶機的數據廣播。如果有一個數據流必須同時被傳送到多個客戶機,服務器必須傳送數據流的副本到各個客戶機,TCP能夠根據網絡帶寬和擁擠程度動態地調節傳送速度并重新發送丟失的數據包,這樣雖然保證了數據傳輸的可靠性,但是對服務器資源耗費較大,在數據流大的場合難以保證數據流傳輸的實時性。
2, UDP為不可靠傳輸協議,在發送端,UDP傳送數據的速度僅僅是受應用程序生成數據的速度,計算機的能力和傳輸帶寬的限制;在接收端,uDP把每個消息段放在隊列中,應用程序每次從隊列中讀一個消息段。
UDP協議不需要維護連接狀態,也不認為每個數據包都必須到達接受端,因此網絡負荷比TCP小,傳輸速度也要比TCP快;但在網絡越擁擠時,越有更多的數據包丟失。
3, RTMP協議是一個專門為高效傳輸視頻,音頻和數據而設計的協議。它通過建立一個二進制TCP連接或者連接HTTP隧道實現實時的視頻和聲音傳輸。
共享對象是RTMP數據中一種比較重要的數據類型,任何客戶端改變數據時,共享對象能夠及時更新服務器端的數據,這樣,每個客戶端都能夠及時了解到數據的變化。
RTMP比傳統媒介服務器流出的媒介協議支持更多。它支持可能包含聲音,影像和腳本數據從服務器到客戶和從客戶到服務器多條線路的動態傳輸。RTMP對聲音、影像和腳本數據分別處理。
聲音和視頻數據被分開地緩沖在服務器中。如果聲音數據在聲音緩沖器中達到某一極限,所有在緩沖器中的數據將被丟掉,并且最近到達的數據被允許開始收集在緩沖中并被送到各個客戶。視頻數據被以相似的方式處理,不同是當新的關鍵幀到達時,緩沖器中數據才被清除。在丟掉舊的幀數據時,如果發現客戶端的數據有誤,則將新舊兩個不同的幀進行擬合。
RTMP對數據給予不同的優先級別。在實時交談中,聲音是最重要的,影像給予低優先級,而腳本數據被給予的優先權介于聲音和影像中間。
RTMP協議可以創建多個數據流,但是每個數據流只能有一個方向。
使用RTMP可以構建這樣的一個系統,客戶端可以同時與RTMP服務器和應用服務器進行交互,使得服務端的負荷得以分散,雖然在這種改進的系統結構中,RTMP服務器的性能要求比較高。
參考文獻:
[1]Giacomo Guilizzoni.Brian Lesser,Joey Lott,et a1.Pro.gramming.Flash.Communication.Server[EB/OL J.0’R·eiuy,2005.
[2]RTMP Specification License Copyright © 2003?2009 Adobe Systems Incorporated. All rights reserved.Published April 2009