文章目录
1、CONNECT – 连接请求
变长字节整数
剩余长度字段使用一个变长字节编码方案,对小于 128 的值它使用单字节编码。更大的值按下面的方式处理。低 7 位有效位用于编码数据,最高有效位用于指示是否有更多的字节。因此每个字节可以编码 128 个数值和一个延续位(continuation bit)。剩余长度字段最大 4 个字节。
1.1、MQTT4
10 1C 00 04 4D 51 54 54 04 C2 00 64 00 04 44 30 30 31 00 04 54 45 53 54 00 04 54 45 53 54
1.2、MQTT5
如果会话过期间隔(Session Expiry Interval)值未指定,则使用0。如果设置为0或者未指定,会话将在网络连接(Network Connection)关闭时结束。
如果会话过期间隔(Session Expiry Interval)为0xFFFFFFFF (UINT_MAX),则会话永不过期。
10 22 00 04 4D 51 54 54 05 C2 00 64 05 11 00 00 00 00 00 04 44 30 30 31 00 04 54 45 53 54 00 04 54 45 53 54
2、CONNACK – 确认连接请求
CONNACK报文由服务端所发送,作为对来自客户端的CONNECT报文的响应。
2.1、MQTT4
20 02 00 00
2.2、MQTT5
属性里会有部分属性,并不全部都有
20 0A 00 00 07 22 FF FF 28 01 2A 00
3、PUBLISH – 发布消息
QoS决定了服务器收到消息的回复的次数
QoS 0 None At most once delivery
QoS 1 PUBACK Packet At least once delivery
QoS 2 PUBREC Packet Exactly once delivery
3.1、MQTT4
30 17 00 0D 2F 70 75 62 6C 69 63 2F 54 45 53 54 2F 31 32 33 34 35 36 37 38
3.2、MQTT5
30 18 00 0D 2F 70 75 62 6C 69 63 2F 54 45 53 54 2F 00 31 32 33 34 35 36 37 38
4、PUBACK– 发布确认
PUBACK报文是对QoS 1等级的PUBLISH报文的响应。
4.1、MQTT4
40 02 00 00
4.2、MQTT5
服务端或客户端发送PUBACK报文时必须设置其中一种PUBACK原因码。当原因码为0x00(成功)且没有属性(Properties)时,原因码和属性长度可以被省略。在这种情况下,PUBACK剩余长度为2。
40 02 00 00
5、PUBREC – 发布已接收
PUBREC报文是对QoS等级2的PUBLISH报文的响应。它是QoS 2等级协议交换的第二个报文。
5.1、MQTT4
50 02 00 00
5.2、MQTT5
PUBREC可变报头第3字节是原因码。如果剩余长度为2,则表示使用原因码0x00(成功)。
服务端或客户端发送PUBREC报文时必须设置其中一种原因码。当原因码为0x00(成功)且没有属性时,原因码和属性长度可以被省略。在这种情况下,PUBREC剩余长度为2。
PUBREC可变报头的属性长度被编码为变长字节整数。如果剩余长度小于4,则表示没有属性长度字段。
6、PUBREL – 发布释放
PUBREL包用来响应PUBREC包。是QoS 2协议交换的第三部分。
6.1、MQTT4
6.2、MQTT5
7、3.7 PUBCOMP – 发布完成(QoS 2,第三步)
7.1、MQTT4
7.2、MQTT5
8、SUBSCRIBE - 订阅请求
8.1、MQTT4
8.2、MQTT5
9、SUBACK – 订阅确认
9.1、MQTT4
9.2、MQTT5
10、UNSUBSCRIBE –取消订阅请求
10.1、MQTT4
10.2、MQTT5
11、UNSUBACK – 取消订阅确认
11.1、MQTT4
11.2、MQTT5
12、PINGREQ – PING 请求
12.1、MQTT4
12.2、MQTT5
13、PINGRESP – 心跳响应
13.1、MQTT4
13.2、MQTT5
14、DISCONNECT – 断开通知
14.1、MQTT4
14.2、MQTT5
15、AUTH – 认证交换
15.1、MQTT4
15.2、MQTT5
更新分割线//