目录
MQTT(Message Queuing Telemetry Transport)是一种轻量级的消息传输协议,广泛用于物联网(IoT)设备之间的通信。它设计用于低带宽、不可靠网络环境下的高效通信。以下是对 MQTT 协议的详细解析。
1. 基本概念
1.1 发布/订阅模型
MQTT 采用发布/订阅(Publish/Subscribe)模型,而不是传统的请求/响应(Request/Response)模型。这个模型涉及三个主要角色:
- 发布者(Publisher):发送消息的客户端。
- 订阅者(Subscriber):接收消息的客户端。
- 代理(Broker):中介服务器,负责接收发布者的消息并将其分发给订阅者。
1.2 主题(Topic)
- 主题是消息的分类标识符,用于将消息路由到正确的订阅者。
- 主题采用层级结构,用斜杠(
/
)分隔,如home/livingroom/temperature
。
1.3 消息
- 消息是发布者发送的实际数据,包含主题和负载(Payload)。
- 负载可以是任意格式的数据,如字符串、JSON、二进制数据等。
2. MQTT 消息类型
MQTT 定义了多种消息类型,每种类型用于不同的操作:
- CONNECT:客户端请求连接到代理。
- CONNACK:代理对连接请求的确认。
- PUBLISH:发布消息。
- PUBACK:发布消息的确认(QoS 1)。
- PUBREC:发布消息接收(QoS 2,第一步)。
- PUBREL:发布消息释放(QoS 2,第二步)。
- PUBCOMP:发布消息完成(QoS 2,第三步)。
- SUBSCRIBE:订阅主题。
- SUBACK:订阅确认。
- UNSUBSCRIBE:取消订阅。
- UNSUBACK:取消订阅确认。
- PINGREQ:心跳请求。
- PINGRESP: