MQTT协议详细解析
时间: 2026-05-08      作者 : 深圳市昊华传感器技术有限公司

MQTT(Message Queuing Telemetry Transport,消息队列遥测传输)是一种轻量级的、基于发布/订阅(Publish/Subscribe)模型的消息传输协议。它专为在低带宽、高延迟或不稳定的网络环境下,实现计算能力和电量都受限的设备(如传感器、执行器)之间高效、可靠的通信而设计

一、核心原理与构成

1.发布/订阅模型MQTT的核心在于将消息的发送者(发布者)和接收者(订阅者)完全解耦,通过一个名为 Broker(代理/服务器) 的中央节点来中转消息。

image.png

2.核心角色:

l 发布者 (Publisher):产生数据并发送到指定主题的客户端(如温度传感器)

l 订阅者 (Subscriber):声明对某个主题感兴趣并接收相应消息的客户端(如手机APP

l 代理 (Broker):处理客户端连接、接收所有发布的消息并将其路由到匹配的订阅者

3.主题 (Topic)MQTT通过主题来区分不同的消息流。它使用/作为分隔符,形成层级结构,如 home/livingroom/temperature

4.主题通配符:

l 单层通配符 (+):匹配一个层级。例如 home/+/temperature 可匹配 home/livingroom/temperature 或 home/bedroom/temperature

l 多层通配符 (#):匹配多个层级。它必须放在主题的最后,如 home/livingroom/# 可匹配 home/livingroom 下的所有主题

5.服务质量 (QoS)MQTT定义了三种消息传输质量等级,在可靠性和效率之间提供不同的权衡

l QoS 0 (最多一次):消息可能丢失,不保证送达。适用于功耗和实时性要求极高的场景,如不断刷新的传感器读数。

l QoS 1 (至少一次):保证消息送达,但可能会重复。适用于非幂等操作不敏感的场景,如接收普通控制指令。

l QoS 2 (恰好一次):保证消息送达且仅送达一次,无重复。适用于要求严苛的场景,如支付交易或关键警报。

6.持久会话 (Persistent Session):当客户端连接时,可以设置 cleanSession 标志为 false,创建一个持久会话。Broker会为离线客户存储所有QoS 12的消息,并在其重新连接后转发

7.遗嘱消息 (Will Message):当客户端非正常断开连接时,Broker会发布一条预先由该客户端设定的遗嘱消息,用于通知其他客户端其状态变化

二、MQTT报文结构

MQTT报文由三部分构成

部分

作用

是否必须

内容示例

固定报头

标识报文类型、QoS等级、DUP标志等

指定这是一个PUBLISH报文,QoS=1

可变报头

提供额外信息

PUBLISH报文中包含的主题名

有效载荷

承载业务数据

发送的传感器数据,如{"temp": 23.5}

三、工作流程

MQTT的通信流程简洁明了,主要分为以下几步

image.png

1.建立连接:客户端向Broker发送CONNECT报文,包含认证信息。Broker验证后返回CONNACK报文确认。

2.订阅主题:订阅者发送SUBSCRIBE报文,指明要订阅的主题和期望的QoS等级。

3.发布消息:发布者发送PUBLISH报文到指定主题。

4.Broker路由Broker收到消息后,查找该主题的所有订阅者,并将PUBLISH报文转发给它们。

5.断开连接:客户端发送DISCONNECT报文,通知Broker主动断开。

四、主要版本对比:3.1.1 vs 5.0

1.MQTT 3.1.1:一个极为稳定和成熟的版本,被大量设备和平台广泛支持

image.png

2.MQTT 5.0:在3.1.1基础上大幅增强,引入了许多新特性,旨在满足更复杂的物联网需求。主要新特性包括:

l 用户属性:允许在报文中添加自定义的键值对元数据。

l 消息过期:可为消息设置有效期,避免订阅者收到过期数据

l 主题别名:用整数ID代替较长的主题字符串,降低带宽消耗

l 增强认证:支持更复杂的质询/响应式认证,提升安全性。

l 请求/响应:支持类似RPC的双向通信模式

l 共享订阅:允许多个订阅者共享一个订阅,实现客户端间的负载均衡

五、应用场景与对比

MQTT是物联网领域的标杆协议,广泛应用于智能家居、工业物联网、车联网、智慧农业、智慧城市等领域。与其他协议相比:

协议

核心模型

传输层

主要特点与适用场景

MQTT

发布/订阅

TCP

轻量、异步、支持多种QoS,是物联网设备通信的首选

HTTP/HTTPS

请求/响应

TCP

无状态、通用性强,主要用于Web服务,在资源受限的物联网场景中开销较大

CoAP

请求/响应

UDP

专为受限节点设计,基于UDP,更轻量,但可靠性需应用层保障,适用于超低功耗传感器

AMQP

队列/路由

TCP

功能更丰富但更重量级的消息协议,适用于企业内部业务系统间的可靠消息传递

六、安全机制

加密传输:支持TLS/SSL加密,确保数据传输的机密性,即MQTTS协议

身份认证:提供用户名/密码认证,以及基于X.509客户端证书的更强认证机制

授权控制Broker可以设置访问控制列表(ACL,精确控制哪些客户端可以发布或订阅哪些主题

七、总结

MQTT之所以能成为物联网通信的基石,主要得益于其轻量级的协议设计、灵活的发布/订阅模型、分级可靠的消息传输保障以及全面的安全机制。这些特性使其成为连接海量物联设备、构建高效可靠物联网应用的理想选择。