简单分析RTMP规范

来源:互联网 发布:java sftp上传文件 编辑:程序博客网 时间:2024/05/16 01:07

参考了网上很多文章,
完整的协议规范包含的内容较多,可以在网上搜索相应的文章。

下面是简单的分析,对于基本的结构有一个基本的了解。

1.RTMP在TCP/IP 体系结构中,属于应用层协议。
RTMP 协议有多个变种:
        1. 工作在 TCP 协议之上,并使用默认端口号 1935 的明文协议。
        2. RTMPS 使用 TLS/SSL 连接的 RTMP 协议。
        3. RTMPE 使用 Adobe 自己的安全机制的加密 RTMP。虽然它的实现细节是私有的,但使用的是行业标准加密原语。RTMPE 的设计是有缺陷的,它本身并不提供实际的安全。
        4. RTMPT 封装在 HTTP 请求内部以穿越防火墙的协议。RTMPT 常用于建立 TCP 端口 80 和 443 的请求以绕开很多公司的流量过滤。封装的会话中可能会携带纯 RTMP、RTMPS 或者 RTMPE 包。

RTMP协议中的数据单元称为消息(Message)。使用RTMP协议传输数据的时候,消息被拆成消息块(Chunk)

2.消息

RTMP消息分成两个部分,头和它的负载。

  2.1 消息头

消息头包含以下内容:
MessageType(消息类型)
Payload Length(负载长度)
Timestamp(时间戳)

Message Stream Id(消息流ID):


其中消息类型用一个字节的字段来表示。ID1-7 用于协议控制
Message Type ID 8-9分别表示音频和视频
MessageType ID 15-20用于AMF编码命令的发送,负责用户和服务器之间的交互,如播放,暂停等。

3 消息块
在传输数据的时候,消息被拆分成较小的数据块,即消息块。消息块由消息块首部(Chunk Header) 和 消息块数据组成。
消息块首部由三部分组成;
Basic header
Chunk Message Header 
Extended TimeStamp(这个只有当时间戳溢出时才会出现)
4.消息分块
消息分块只是 把Msg 的Data部分分成消息块。

块大小是可配置的。这个可以在7.1节中描述的块消息中完成。最大块是65535字节,最小块是128字节。块越大CPU使用率越低,但是也导致大的写入,在低带宽下产生其他内容的延迟。块大小对每个方向都保持独立。




疑问:
消息被分成消息块的时候,只是把Msg Body分成了块,
消息头没有处理,
这个消息头如何传递?

0 0
原创粉丝点击