MQTT报文详解

226 阅读4分钟

MQTT报文详解

报文组成:

固定可变负载
2字节10字节不定

1.CONNECT报文-----16进制

在这里插入图片描述

0x10 ??

在这里插入图片描述 逢128进位,最高位表示后面的字节种有无数据,1表示有,0表示没有。


在这里插入图片描述

在这里插入图片描述

0x10 ?? 00 04 4D 51 54 54 04 

在这里插入图片描述

0x10 ?? 00 04 4D 51 54 54 04 C2

在这里插入图片描述

数据单位为秒。假设100秒不发送数据至服务器,服务器会踢出该连接

0x10 ?? 00 04 4D 51 54 54 04 C2 64

负载原始内容:

客户端ID长度+(客户端ID :*|securemode=3,signmethod=hmacsha1|)
 
用户名长度+(用户名 :*&#)                 

密码长度+(密码 :用DeviceSecret做为秘钥对 clientId*deviceName*productKey# 进行hmacsha1加密后的结果)      
*设备名称 #ProductKey  注意替换

例如我的设备名称为D001;ProductKey为:a1rSPQr0tkP;故我的负载前两项的内容部分为:

D001|securemode=3,signmethod=hmacsha1|
D001&a1rSPQr0tkP

第三项为clientIdD001deviceNameD001productKeya1rSPQr0tkP的用设备密钥 进行哈希加密结果: 在这里插入图片描述 在这里插入图片描述 至此负载三项内容均已得出,但是没完。这之后还要把这三个字符串转换成16进制表示,并在前面的加两字节说明长度。转换后的结果为:

10 6E 00 04 4D 51 54 54 04 C2 00 64 
00 26 44 30 30 31 7C 73 65 63 75 72 65 6D 6F 64 65 3D 33 2C 73 69 67 6E 6D 65 74 68 6F 64 3D 68 6D 61 63 73 68 61 31 7C 
00 10 44 30 30 31 26 61 31 72 53 50 51 72 30 74 6B 50 
00 28 37 65 63 34 34 33 xx 31 39 37 62 62 36 xx 34 31 36 33 37 38 36 31 30 34 66 66 34 32 39 35 36 36 37 30 31 64 61 39 39 62 
固定固定(剩余长度)可变(协议名、协议级别、连接标志、保持连接)负载
1字节1字节10字节不定字节
0x10??00 04 4D 51 54 54 04 C2 00 64客户端ID长度+客户端ID ;用户名长度+用户名; 密码长度+密码.

2.DISCONNECT

E0 00

3.PING

C0 00

4.PINGRSP

D0 00

5.SUBCRIBE 等级0 (固定报头 标识符 长度 topic订阅字符串 等级)

82 35 00 0A 00 30 2F 73 79 73 2F 61 31 72 53 50 51 72 30 74 6B 50 2F 44 30 30 31 2F 74 68 69 6E 67 2F 73 65 72 76 69 63 65 2F 70 72 6F 70 65 72 74 79 2F 73 65 74 00

6.订阅确认

90 03 00 0A 01

7.取消订阅

A2 34 00 0A 00 30 2F 73 79 73 2F 61 31 72 53 50 51 72 30 74 6B 50 2F 44 30 30 31 2F 74 68 69 6E 67 2F 73 65 72 76 69 63 65 2F 70 72 6F 70 65 72 74 79 2F 73 65 74

8.取消订阅回复

B0 02 00 0A

9.发布消息(30 +剩余字节长度 + 00 30 )

30 99 01 
00 30 
2F 73 79 73 2F 61 31 72 53 50 51 72 30 74 6B 50 2F 44 30 30 31 2F 74 68 69 6E 67 2F 73 65 
72 76 69 63 65 2F 70 72 6F 70 65 72 74 79 2F 73 65 74 (/sys/a1rSPQr0tkP/D001/thing/service/property/set7B 22 6D 65 74 68 6F 64 22 3A 22 74 68 69 6E 67 2E 
73 65 72 76 69 63 65 2E 70 72 6F 70 65 72 74 79 2E 73 65 74 22 2C 22 69 64 22 3A 22 39 32 38 33 35 31 34 
35 36 22 2C 22 70 61 72 61 6D 73 22 3A 7B 22 61 6C 6C 50 6F 77 65 72 73 74 61 74 65 22 3A 30 7D 2C 22 76 
65 72 73 69 6F 6E 22 3A 22 31 2E 30 2E 30 22 7D ({"method":"thing.service.property.set","id":"928351456","params":{"allPowerstate":0},"version":"1.0.0"})