---
doc_type: hypothesis-highlights
url: 'https://developer.aliyun.com/article/786001'
---
# MQTT协议详解及v5.0实践-阿里云开发者社区
## Metadata
- Author: [developer.aliyun.com]()
- Title: MQTT协议详解及v5.0实践-阿里云开发者社区
- Reference: https://developer.aliyun.com/article/786001
- Category: #source/article🗞
- Tags:
## Highlights
- MQTTv3协议是为在低带宽、不可靠的网络上工作的传感器而设计的基于TCP的应用层协议，适用于IoT场景

- 使用发布/订阅消息模式，支持一对多的消息分发

- 报文格式设计精简， 适用于小规模数据传输以及资源受限的IoT设备

- 支持QoS0、QoS1、QoS2 三种消息QoS。

- MQTT-SN(Sensor Networks) 是MQTT协议的传感器网络版本，最早用在zigBee无线网络中，主要面对电池供电，有限的处理器能力和存储能力的设备。只有很小的内存和CPU，TCP 对于这些设备来说非常奢侈，甚至无法允许TCP协议栈。

- MQTT 5.0在协议层提供了更大的自定义扩展空间，平台基于扩展点可支持更丰富的协议能力

- 设备状态一致性策略设计，包括session管理机制、心跳检测机制、异地登陆问题、状态最终一致性策略

- 协议层本地有session管理器来对本地会话进行管理，通过心跳检测、会话自检来保证跟设备之间的连接状态一致性

- 设备状态一致性策略：设备到MQTT协议接入层之间是tcp长连接，通过心跳机制保证心跳周期内设备状态的最终一致性

- 通过分布式会话版本号，保证分布式会话并发更新安全，通过上行消息/心跳定时触发会话自检机制，解决异常情况下本地/分布式会话状态不一致的问题。

- MQTT协议是基于PUB/SUB的异步通信模式

- MQTT协议层针对不同场景支持多种MQTT接入方式，同时支持tcp直连、tls、ws、wss等方式接入

- 协议层实现了多协议端口复用，也就是一个端口同时支持多种协议

- 通过topic中包含的messageId匹配请求与响应，对业务数据零侵入messageId的生成与匹配、超时控制等逻辑，调用方无感知简化了业务方调用逻辑，扩展了MQTT使用场景。

