CDN协议全称为Real Time Messaging Protocol,即实时消息传送协议,是Adobe Systems公司为Flash播放器和流媒体服务器之间传输音频、视频和数据所开发的私有协议。为了推广基于Flash平台的视频应用,给视频应用开发者和使用者带来更好的产品体验,Adobe公司于2009年开放了CDN协议,相关协议文档说明也可以在Adobe的官方网站下载。这里将对RTMP协议做一个详细的描述,如果开展IDC业务,需要了解数据中心网络。
在理解RTMP协议和具体流程之前,我们来看看CDN协议中定义的基本通信单元:消息块(Chunk)和消息(Message)。RTMP消息是协议中实现各种流媒体控制和应用的基本逻辑信息单元,消息从种类上可以分为协议控制消息、用于发送音频数据的音频消息、用于发送视频数据的视频消息、发送用户数据的数据消息、共享对象消息以及命令消息,属于相同逻辑通道的消息组成一个消息流,这个逻辑通道通过消息格式中的“消息流ID”字段来标识。
作为应用层协议,CDN协议架构在TCP层之上,但RTMP消息并不是直接封装在TCP中,而是通过一个被称为消息块的封装单元进行传输。消息在网络上发送之前往往需要分割成多个较小的部分,这些较小的部分就是消息块,属于不同消息流的消息块可以在网络上交叉发送。这样做可以保证各个消息流中的高优先级消息块能够严格按照时间顺序达到通信的对端。比如某个较长消息的实时性要求较低,如果不进行消息块处理,等长消息都发送完毕后再发送实时性要求高的短消息,则会对流媒体的播放质量造成影响。
于相同逻辑通道的消息块组成一个消息块流,这个逻辑通道通过消息块格式中的“消息块流ID”字段来标识。消息发送方可以将相同类型的多个消息流复用成一个消息块流,接收方根据消息块中的消息流ID解复用出各个消息流,并最终将消息块还原成消息。 RTMP消息块流在CDN协议中相对比较独立,它本身只负责数据的传输,而数据传输以外的控制功能则由更上层的RTMP协议来完成。