Mqtt的协议,初步通读时,有些迷糊,故特意归纳下,像字典一样查看,容易理解Mqtt的代码。
大家在学习mqtt时,还是要先看下协议,只是在解析Mqtt的协议时,可以参考下边的表格。
1、CONNECT
CONNECT | ||||||||||
Bits | 7 | 6 | 5 | 4 | 3 | 2 | 1 | 0 | 说明 | |
byte1 | 0 | 0 | 0 | 1 | 0 | 0 | 0 | 0 | 固定报头 | CONNECT |
byte2 | 剩余长度 Remaining Length | 剩余长度(最多4字节) | ||||||||
MSB(byte1) | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | Protocol Name | 可变报头 Variable header |
LSB(byte2) | 0 | 0 | 0 | 0 | 0 | 1 | 0 | 0 | ||
M(byte3) | 0 | 1 | 0 | 0 | 1 | 1 | 0 | 1 | ||
Q(byte4) | 0 | 1 | 0 | 1 | 0 | 0 | 0 | 1 | ||
T(byte5) | 0 | 1 | 0 | 1 | 0 | 1 | 0 | 0 | ||
T(byte6) | 0 | 1 | 0 | 1 | 0 | 1 | 0 | 0 | ||
(byte7) | 0 | 0 | 0 | 0 | 0 | 1 | 0 | 0 | 协议级别 Protocol Level(level4) |
|
(byte8) | User Name Flag |
Password Flag |
Will Retain | Will QoS | Will Flag | Clean Session | Reserved | 连接标志 Connect Flags |
||
(byte9) | 保持链接 Keep Alive MSB | Keep Alive | ||||||||
(byte10) | 保持链接 Keep Alive LSB | |||||||||
客户端标识符 Client Identifer(1~23字节) | 负载 Payload |
|||||||||
遗嘱主题 Will Topic | ||||||||||
遗嘱消息 Will Message | ||||||||||
用户名 User Name | ||||||||||
密码 Password |
2.CONNACK
CONNACK | ||||||||||
Bits | 7 | 6 | 5 | 4 | 3 | 2 | 1 | 0 | 说明 | |
byte1 | 0 | 0 | 1 | 0 | 0 | 0 | 0 | 0 | 固定报头(CONNACK) | CONNACK |
byte2 | 0 | 0 | 0 | 0 | 0 | 0 | 1 | 0 | 剩余长度(最多4字节) | |
byte3 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | Session Present |
连接确认标志 | 可变报头 Variable header |
byte4 | x | x | x | x | x | x | x | x | 连接返回码 |