MQTT学习主要是要搞清楚以下几个问题:
- 通讯流程:即双方是如何通讯的;
- 主要有哪些报文;
- 报文是如何构成的;
- 报文剩余长度是如何计算的;
- UTF8字符串
通讯流程
参看此表
| 名字 | 值 | 报文流动方向 | 描述 |
|---|---|---|---|
| Reserved | 0 | 禁止 | 保留 |
| CONNECT | 1 | 客户端到服务端 | 客户端请求连接服务端 |
| CONNACK | 2 | 服务端到客户端 | 连接报文确认 |
| PUBLISH | 3 | 两个方向都允许 | 发布消息 |
| PUBACK | 4 | 两个方向都允许 | QoS 1 消息发布收到确认 |
| PUBREC | 5 | 两个方向都允许 | 发布收到(保证交付第一步) |
| PUBREL | 6 | 两个方向都允许 | 发布释放(保证交付第二步) |
| PUBCOMP | 7 | 两个方向都允许 | QoS 2 消息发布完成(保证交互第三步) |
| SUBSCRIBE | 8 | 客户端到服务端 | 客户端订阅请求 |
| SUBACK | 9 | 两个方向都允许 | 订阅请求报文确认 |
| UNSUBSCRIBE | 10 | 客户端到服务端 | 客户端取消订阅请求 |
| UNSUBACK | 11 | 两个方向都允许 | 取消订阅报文确认 |
| PINGREQ | 12 | 客户端到服务端 | 心跳请求 |
| PINGRESP | 13 | 两个方向都允许 | 心跳响应 |
| DISCONNECT | 14 | 客户端到服务端 | 客户端断开连接 |
| Reserved | 15 | 禁止 | 保留 |
公共部分
除了黄色标识的,余下报文属于公共部分。公共部分的通讯基本采用一问一答的形式。具体问答的方向,可以参看表中的报文流动方向。
本文深入解析MQTT协议的通讯流程,包括CONNECT、PUBLISH、SUBSCRIBE等关键报文的交互方式,以及QoS等级下的消息确认机制。同时,探讨了报文构成与长度计算规则,适合物联网与消息队列领域的技术爱好者。
598

被折叠的 条评论
为什么被折叠?



