转载自: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