
简单理解MQTT协议MQTT定义使用场景工作原理交互流程总结MQTT定义MQTTMessage Queuing Telemetry Transport协议是ISO标准下的一个基于发布/订阅模式运行在TCP/IP协议族的一个应用层消息传输协议。特点轻量级、简单、开放、易于实现。使用场景MQTT是为了解决低带宽、高延迟、不稳定网络下资源受限设备的通信问题通常用于传感器、智能家居等需要与服务器端通信的嵌入式设备中。工作原理MQTT采用典型的客户端–代理Client–Broker架构实现松耦合的消息交换。发布/订阅机制客户端Client可发布消息Publish或订阅主题Subscribe代理Broker负责消息分发实现一对多通信主题Topic一个字符串具有层级结构home/user/login是代理管理各个客户端消息通信的依据载荷Payload实际的数据内容可以是任意二进制数据格式完全由应用自定义例如JSON格式消息Message由 主题和载荷组成服务质量QoS这是MQTT最核心的机制定义了消息传递的可靠性等级QoS 0至多一次发即忘不确认、不重传。对应UDP的风格效率最高可靠性最低。QoS 1至少一次确保消息到达但可能重复。发送者等待接收方的PUBACK报文。超时则重发。对应TCP的可靠交付但可能乱序。QoS 2恰好一次通过发送者和接收者之间的四次握手(PUBLISH → PUBREC → PUBREL → PUBCOMP)来确保消息既不丢失也不重复。这是最高级别的可靠性开销也最大。PUBLISH发送方发送具有标识性的数据PUBREC接收方收到数据回复接收完成保存并确保消息唯一性PUBREL接收方收到完成的回复发送释放信号并等待接收方的回应超时重发消息PUBCOMP接收方收到释放信号将消息交给上层应用并销毁消息回复完成信号发送方接收到回复删除本地状态交互流程连接CONNECT客户端向代理发送CONNECT报文包含协议名、版本、ClientID、用户名/密码等。代理回复CONNACK确认连接结果。订阅SUBSCRIBE客户端发送订阅SUBSCRIBE报文包含一个或多个主题支持通配符和对应的最大QoS。代理回复SUBACK确认。发布PUBLISH客户端向代理发送发布PUBLISH报文包含主题名、QoS等级和载荷。代理根据主题将消息转发给所有匹配的订阅者。断开DISCONNECT客户端发送DISCONNECT报文终止连接。总结客户端通过TCP/IP协议连接到MQTT代理服务器然后可以发布消息到指定的主题或者订阅一个或多个主题来接收消息。当有新的消息发布到某个主题时代理服务器就会把这个消息发送给所有订阅了该主题的客户端。