最近学习MQTT协议和与Onenet平台的数据交互。MQTT中有几个方法,想借此机会将每个方法的流程梳理一下
一.MQTT数据包结构
在MQTT协议中,一个MQTT数据包由:固定头(Fixed header)、可变头(Variable header)、消息体(payload)三部分构成。MQTT数据包结构如下:
(1)固定头(Fixed header)。存在于所有MQTT数据包中,表示数据包类型及数据包的分组类标识。
(2)可变头(Variable header)。存在于部分MQTT数据包中,数据包类型决定了可变头是否存在及其具体内容。
(3)消息体(Payload)。存在于部分MQTT数据包中,表示客户端收到的具体内容。
二.CONNECT
2.1 Fixed Header
Bit |
7 |
6 |
5 |
4 |
3 |
2 |
1 |
0 |
byte 1 |
MQTT Packet Type |
0 |
0 |
0 |
0 |
|||
byte2 - 5 |
Remaining Length(该字段占用1-4个字节) |
MQTT数据包类型:位于Byte1的第7~4位
名字 |
值 |
流向 |
描述 |
CONNECT |
1 |
C->S |
客户端请求与服务端建立连接 |
CONNACK |
2 |
S->C |
服务端确认连接建立 |
PUBLISH |
3 |
双向 |
发布消息 |
PUBACK |
4 |
双向 |
收到发布消息确认 |
PUBREC |
5 |
双向 |
发布消息收到 |
PUBREL |
6 |
双向 |
发布消息释放 |
PUBCOMP |
7 |
双向 |
发布消息完成 |
SUBSCRIBE |
8 |
C->S |