如果看看Internet的发展历史可以发现,最早的Internet并不是为传输多媒体内容而设计的网络,它只用于传输纯文本性的资料。经过一段时间后才加入了图像等数据形式,而到现在 Internet中越来越多地出现了多媒体内容。对于现在的Internet来讲,传输多媒体内容存在着一定的困难而这些困难又是我们必须面对的。
就网络传输而言,矛盾主要集中在3个方面:其一是与纯文本性的数据相比,多媒体数据要占用更多的网络带宽,这种对带宽需求的增加决不是几倍、几十倍的关系,而是几百倍、上千倍的需求;其二是多媒体应用需要实时的网络传输,音频和视频数据必须进行连续的播放。如果数据不能按时抵达目的地,多媒体播放就会停止或中断。相信这不是任何一个观众所希望遇到的。如果在出现数据延时情况后不能够合理的建立延时数据的丢弃、重发机制,那么网络的阻塞就会更加严重,最终导致停滞状态;其三是多媒体数据流突发性很强,仅仅是单纯的增加带宽往往不能够解决数据流的突发问题。对于大多数的多媒体应用程序来讲数据接收端都有一个缓存限制,如果不能够很好地调节数据流的平稳度,那么就会导致应用程序的缓存溢出。
解决上述问题的方法除了快速发展网络软硬件的建设以突破带宽限制外,设计一种实时传输协议来迎接多媒体时代的到来也是势在必行的。
为了在IP网上传输多媒体内容,IETF(互联网工程任务组)开发了一个Internet增强服务模型,包括“best-effort”(尽力传送)服务和“real-time”服务。其中的“real-time”服务就是为在IP网络中传输多媒体数据提供质量保证,同时我们可以看到RSVP、RTP、RTCP、RTSP四种协议构成了“real-time”服务的基础。
1. 资源预留协议(RSVP协议)
资源预留协议RSVP(Resource Reservation Protocol)原本是为网络会议应用而开发的,后被互联网工程任务组(IETF)的Integrated Services工作组集成到通用的资源预留解决方案中。RSVP协议是施乐公司的 Palo Alto研究中心、麻省理工学院(MIT)以及美国加州大学信息科学学院等研究机构共同的成果。1994年11月提交到互联网工程指导组(IESG)请求提议标准,1997年9月RSVP Version功能规范成了Internet标准。
RSVP 协议是网络控制协议,它使 Internet 应用传输数据流时能够获得特殊服务质量(Qo Ss)。RSVP是非路由协议,它同路由协议协同工作,建立与路由协议计算出路由等价的动态访问列表。RSVP协议属于OSI 7层协议栈中的传输层。RSVP的组成元素有发送端、接收端和主机或路由器。发送端负责让接收端知道数据将要发送,以及需要什么样的Qo S;接收者负责发送一个通知到主机或路由器,这样它们就可以准备接收即将到来的数据;主机或路由器负责留出所有合适的资源。
RSVP的工作原理大致是这样的:发送端首先向接收端发送一个RSVP信息,RSVP信息同其他IP数据包一样通过各个路由器到达目的地。接收端在接收到发送端发送的信息之后。由接收端根据自身情况逆向发起资源预留请求,资源预留信息沿着与原来信息包相反的方向对沿途的路由器逐个进行资源预留。
2.RTP协议
RTP(Real-time Transport Protocol)是用于Internet上针对多媒体数据流的一种传输协议。RTP 被定义为在一对一或一对多的传输情况下工作,其目的是提供时间信息和实现流同步。RTP通常使用UDP来传送数据,但RTP也可以在TCP或ATM等其他协议之上工作。当应用程序开始一个RTP会话时将使用两个端口:一个给RTP,一个给RTCP。
图8.20 RTP数据包
RTP数据包中包括4项基本内容。通过图8.20可以形象地看到RTP数据包的位置及结构。RTP数据包由固定报头和有效载荷两部分组成,其中固定报头又包括时戳、顺序标号、同步源标识、贡献源标识等,有效载荷就是传输的音频或视频等多媒体数据。
时戳(Timestamping)是实时应用中的一个重要概念。发送端会在数据包中插入一个即时的时间标记,这个时间标记就是所说的时戳。时戳会随着时间的推移而增加,当数据包抵达接收端后,接收端会根据时戳重新建立原始音频或视频的时序。时戳也可以用于同步多个不同的数据流,帮助接收方确定数据到达时间的一致性。
由于UDP协议发送数据包时无时间顺序。因此人们就使用顺序编号(Sequence Numbers)对抵达的数据包进行重新排序,同时顺序标号也被用于对丢包的检查。在实际的传输过程中会遇到如下的情况,在某些视频格式中,一个视频帧的数据可能会被分解到多个RTP数据包中传递,这些数据包会具有同一个时戳。因此仅凭时戳是不能够对数据包重新排序的,还必须依赖顺序编号。
源标识(Source Identification)可以帮助接收端利用发送端生成的唯一数值来区分多个同时的数据流。得到数据的发送源,例如在网络会议中通过源鉴定可以得到哪一个用户在讲话。
有效载荷类型(Payload Type)对传输的音频、视频等数据类型予以说明,并说明数据的编码方式,接收端从而知道如何破译和播放负载数据。
同步源标识(SSRC),占32 bit,从一个同步源出来的所有的包构成了相同的时间和序列部分。所以在接收端就可以用同步源为包分组,从而进行回放。
贡献原标识(CSRC),可以有0~15个项目,每个项目占32 bit,一列贡献源标识被插入到“Mixer”(混合器)中。混合器表示将多个载荷数据组合起来产生一个将要发出去的包,允许接收端确认当前数据的贡献源。它们具有相同的同步源标识符。
RTP协议有如下优点:
(1)协议简单:RTP协议是建立在UDP协议上的,其本身不支持资源预留,不提供保证传输质量任何机制。数础包也是依靠下层协议提供长度标识和长度限制、因此协议规定相对简单得多。
(2)扩展性好:RTP协议一般建立在UDP之上,充分利用了UDP协议的多路复用服务,当然它也可以建立在其他的传输协议卜,像ATM、IPV6等。这主要得益于RTP协议不对下层协议作任何的指定,同时RTP对于新的负载类型和多媒体软件来讲也是完全开放的。
(3)数据流和控制流分离:RTP协议的数据传输和控制传输使用不同的端口,大大提高了协议的灵活性和处理的简单性。
3.RTCP协议
RTCP是英文Real-Time Control Protocol的缩写,中文称为“实时传输控制协议”。RTCP是一个控制协议。它的设计目的是与RTP协议共同合作,为顺序传输数据包提供可靠的传送机制,并对网络流量和阻塞进行控制。
RTP协议是互联网上广泛应用的流媒体传输协议。通常运行于RTP/UDP模式下,而UDP协议本身不提供任何传输可靠性保证,传输层的控制功能主要由它的控制部分RTCP协议来实现。RTCP协议是RTP协议的控制部分。RTP用来传递实时多媒体数据信息,除了携带多媒体数据外,它还给出了所携带负载的时间戳、顺序号等信息。为了可靠、高效地传送实时数据,RTP和RTCP必须配合使用。RTCP依靠反馈机制根据已经发送的数据报文对带宽进行调整、优化,从而实现对流媒体服务的Qo S控制。RTCP反馈可以直接作用于编码、发送、甚至协议选择环节。
RTCP数据包是一个控制包,它由一个固定报头和结构元素组成。其报头与RTP数据包的报头相类似,一般都是将多个RTCP数据包合成一个包在底层协议中传输。RTP和 RTCP两者配合能以有效的反馈和最小的开销使传输效率最佳化,特别适合在Internet上传输实时数据。
4.RTSP协议
实时流协议RTSP(Real Time Streaming Protocol)是由RealNetworks和Netscape共同提出的,该协议定义了一对多应用程序如何有效地通过IP网络传送多媒体数据。RTSP在体系结构上位于RTP和RTCP之上,它使用TCP或RTP完成数据传输。HTTP与RTSP相比, HTTP传送HTML,而RTP传送的是多媒体数据。HTTP请求由客户机发出,服务器作出响应;使用RTSP时,客户机和服务器都可以发出请求,即RTSP可以是双向的。
实时流协议(RTSP)是应用级协议,控制实时数据的发送。RTSP提供了一个可扩展框架,使实时数据,如音频与视频的受控、点播成为可能。数据源包括现场数据与存储在剪辑中数据。该协议目的在于控制多个数据发送连接,为选择发送通道,如UDP、组播UDP与TCP,提供途径,并为选择基于RTP上的发送机制提供方法。
RTSP提供的操作主要有3种:
(1)从媒体服务器上取得多媒体数据,客户端可以要求服务器建立会话并传送被请求的数据。
(2)要求媒体服务器加入会议,并回放或录制媒体。
(3)向已经存在的表达中加入媒体。当任何附加的媒体变为可用时,客户端和服务器之间要互相通报。
免责声明:以上内容源自网络,版权归原作者所有,如有侵犯您的原创版权请告知,我们将尽快删除相关内容。