MQTT基础(报文结构)

官网中文地址https://mcxiaoke.gitbooks.io/mqtt-cn/content/mqtt/02-ControlPacketFormat.html

报文结构:固定报头+可变报头+有效载荷

1.固定报头

1.1 固定报头总览:

MQTT基础(报文结构)

1.2.MQTT控制报文类型

MQTT基础(报文结构)

1.3.指定控制报文类型的标志位:(暂时只会用到PUBLISH)

MQTT基础(报文结构)

1.4 剩余长度 Remaining Length(包括可变报头负载的数据的长度)

使用变成编码(1到4个字节表示,即最大可表示256M,每个字节可编码128个数值+1个延续位(最高位是延续位表示是否有更多字节,低7位表示128个数值)):

MQTT基础(报文结构)

2.可变报头

可变报头的内容根据 控制报文类型 的不同而不同。(特别注意:部分控制报文需要 报文标识符字段)

MQTT基础(报文结构)

PUBACK, PUBREC, PUBREL报文必须包含与最初发送的PUBLISH报文相同的报文标识符,以此来标识是同一条信息

如果一个客户端要重发这个特殊的控制报文,在随后重发那个报文时,它必须使用相同的标识符。

当客户端处理完这个报文对应的确认后,这个报文标识符就释放可重用。QoS 1的PUBLISH对应的是PUBACK,QoS 2的PUBLISH对应的是PUBCOMP

3.有效载荷 Payload(应用消息)

MQTT基础(报文结构)