简单分析RTMP规范

from: https://blog.csdn.net/gengxt2003/article/details/51553629

 librtmp开源库/RTMP协议播放流程的实现及抓包分析 https://blog.csdn.net/DaveBobo/article/details/76557596

RTMP协议分析   https://blog.csdn.net/liuzh501448/article/details/7245685

2016年06月01日 09:44:09

阅读数:2029



参考了网上很多文章,

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

 

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

 

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
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值