协议控制消息:
RTMP为协议控制消息保留了消息类型ID 1-7。这些消息包含了RTM Chunk Stream协议或RTMP本身所需的信息。类型ID为1和2的协议消息是为RTM Chunk Stream协议保留的。类型ID为3-6的协议消息是为RTMP保留的。类型ID为7的协议消息用于边缘服务器和源服务器之间。 协议控制消息必须具有消息流ID 0(称为控制流)和块流ID 2,并且以最高优先级发送。 每种协议控制消息类型都有一个固定大小的有效载荷。
设置块大小:
协议控制消息1,设置块大小,用于通知对等方使用的新的最大块大小。 数据块大小的值以4字节的消息有效载荷形式传输。数据块大小有一个默认值,但如果发送方想要更改这个值,它会通过这个协议消息通知对等方。例如,一个客户端想要发送131字节的数据,而数据块大小处于默认值128字节。因此,客户端的每条消息被分成两个数据块。客户端可以选择将数据块大小更改为131字节,以便每条消息被分成两个数据块。客户端必须发送这个协议消息给服务器,以通知数据块大小设置为131字节。数据块的最大大小可以是65536字节。服务器到客户端通信和客户端到服务器通信的数据块大小是独立维护的。

块大小: 32 bit ; 这个字段保存新的数据块大小,它将被用于此数据块流发送的所有未来数据块。
终止消息
协议控制消息2,中止消息,用于在对方正在等待数据块以完成一条消息时通知对方,然后丢弃通过数据块流部分接收到的消息,并中止处理该消息。对方接收到要丢弃的消息的数据块流ID作为此协议消息的有效载荷。当发送方已经发送了消息的一部分,但想要告诉接收方剩余的消息将不会被发送时,会发送此消息。

块流ID : 32 bit ; 这个字段保存数据块流ID,其对应的消息将被丢弃。
应答
客户端或服务器在接收到等于窗口大小的字节后向对等方发送确认。窗口大小是发送方在未收到接收方确认之前发送的最大字节数。服务器在应用程序连接后将窗口大小发送给客户端。此消息指定了序列号,即到目前为止已接收的字节数。

序列号: 32bit ; 这个字段保存到目前为止已接收的字节数。
用户控制消息
客户端或服务器发送此消息以通知对等方有关用户控制事件。此消息携带事件类型和事件数据。

消息数据的前2个字节用于标识事件类型。事件类型之后是事件数据。事件数据字段的大小是可变的。
窗口应答大小
客户端或服务器发送此消息以通知对等方在发送确认时使用哪个窗口大小。例如,服务器期望在每次发送等同于窗口大小的字节后从客户端收到确认。服务器在成功处理客户端的连接请求后更新客户端的窗口大小信息。

设置对端带宽
客户端或服务器发送此消息以更新对等方的输出带宽。输出带宽值与对等方的窗口大小相同。如果对等方当前的窗口大小与消息中接收到的窗口大小不同,它会发送“窗口确认大小”回去。

发送方可以使用限制类型字段将此消息标记为硬限制(0)、软限制(1)或动态限制(2)。在硬限制(0)请求中,对等方必须在提供的带宽内发送数据。在软限制(1)请求中,带宽由对等方自行决定,发送方可以限制带宽。在动态限制(2)请求中,带宽可以是硬限制或软限制。
作者:txp
来源:飞一样的成长
原文:https://mp.weixin.qq.com/s/aG45_lj330gpo_MfwMs9pw
版权声明:本文内容转自互联网,本文观点仅代表作者本人。本站仅提供信息存储空间服务,所有权归原作者所有。如发现本站有涉嫌抄袭侵权/违法违规的内容, 请发送邮件至1393616908@qq.com 举报,一经查实,本站将立刻删除。