RTP 简介 RTP 是一种提供端对端传输服务的实时传输协议,用来支持在单目标广播和多目标广播网络服务中传输实时数据,而实时数据的传输则由RTCP 协议来监视和控制。 RTP 定义在RFC 使用RTP 协议的应用程序运行在RTP 之上,而执行RTP 的程序运行在UDP 的上层,目的是为了使用UDP 的端口号和检查和。如图1 所示,RTP 可以看成是传输层的子层。由多媒体应用程序生成的声音和电视数据块被封装在RTP 信息包中,每个RTP 信息包被封装在UDP 消息段中,然后再封装在IP 数据包中。 信息包的结构包含广泛用于多媒体的若干个域,包括声音点播(audio-on-demand)、影视点播(video on demand)、因特网电话(Internet telephony)和电视会议(videoconferencing)。RTP 的规格没有对声音和电视的压缩格式制定标准,它可以被用来传输普通格式的文件。例如,WAV 或者 GSM(Global System for Mobile communications)格式的声音、MPEG-1和MPEG-2 的电视,也可以用来传输专有格式存储的声音和电视文件。 从应用开发人员的角度来看,可把RTP 执行程序看成是应用程序的一部分,因为开发人员必需把RTP 集成到应用程序中。在发送端,开发人员必需把执行RTP 协议的程序写入到创建 RTP 信息包的应用程序中,然后应用程序把RTP 信息包发送到UDP 的套接接口(socket interface),如图 2 所示;同样,在接收端,RTP 信息包通过 UDP 套接接口输入到应用程序,因此开发人员必需把执行RTP 协议的程序写入到从RTP 信息包中抽出媒体数据的应用程序。 现以用RTP 传输声音为例来说明它的工作过程。假设音源的声音是64 kb/s 的PCM 编码声音,并假设应用程序取20 毫秒的编码数据为一个数据块(chunk),即在一个数据块中有160个字节的声音数据。应用程序需要为这块声音数据添加RTP 标题生成RTP 信息包,这个标题包括声音数据的类型、顺序号和时间戳。然后 RTP 信息包被送到 UDP 套接接口,在那里再被封装在UDP 信息包中。在接收端,应用程序从套接接口处接收 RTP 信息包,并从RTP 信息包中抽出声音数据块,然后使用RTP 信息包的标题域中的信息正确地译码和播放声音。 如果应用程序不使用专有的方案来提供有效载荷类型(payload type)、顺序号或者时间戳,而是使用标准的RTP 协议,应用程序就更容易与其他的网络应用程序配合运行,这是大家都希望的事情。例如,如果有两个不同的公司都在开发因特网电话软件,他们都把 RTP 合并...