MQTT控制报文内容学习
结合 MQTT协议中文版学习。
消息结构:固定报头fiexd header + 可变报头variable header + 有效载荷payload。
1 CONNECT-连接服务端
-
消息示例:10 22 00 04 4D 51 54 54 04 C2 00 0A 00 04 74 65 73 74 00 05 61 64 6D 69 6E 00 09 79 70 6B 6A 40 31 32 33 34
消息ASCII: \10"\00\04MQTT\04\c2\00\n\00\04test\00\05admin\00\typkj@1234 固定报头: 10 22 报文类型;剩余字长 (剩余长度从第二个字节开始,最多四个字节。每个字节的低 7 位用于编码数据,最高位是标志位,最高位为1 表示后面至少还有一个字节) 可变报头: 00 04 4D 51 54 54 04 C2 00 0A 协议名 + 协议级别 + 连接标志 + 保持连接 有效载荷:utf-8的前两个字节为字长 00 04 74 65 73 74 字长(00 04);客户端ID:test的十六进制 00 05 61 64 6D 69 6E 字长(00 05);用户名:admin的十六进制 00 09 79 70 6B 6A 40 31 32 33 34 字长(00 09);密码:ypkj@1234的十六进制
2 CONNACK-确认连接请求
CONNACK 报文没有有效载荷。
-
消息响应:20 02 00 00
消息ASCII: \02\00\00 固定报头: 20 02 报文类型;剩余字长 可变报头: 00 00 连接确认标志(00);连接返回码(00-已接受)
-
连接返回码的值
值 | 返回码响应 | 描述 |
---|---|---|
0 | 0x00连接已接受 | 连接已被服务端接受 |
1 | 0x01连接已拒绝,不支持的协议版本 | 服务端不支持客户端请求的MQTT协议级别 |
2 | 0x02连接已拒绝,不合格的客户端标识符 | 客户端标识符是正确的UTF-8编码,但服务端不允许使用 |
3 | 0 |