mqtt学习笔记
MQTT 协议概述
MQTT(Message Queuing Telemetry Transport)是一种基于 发布/订阅模式 的轻量级通信协议,专为 低带宽、高延迟或不可靠网络 的物联网设备设计。其核心特性包括:
- 轻量化:协议头最小仅 2 字节,适合计算能力受限的设备。
- 低功耗:支持持久连接和心跳机制,减少能耗。
- 灵活通信:通过主题(Topic)实现一对多、多对多的消息路由。
协议分层架构
MQTT 作为应用层协议,依赖底层网络协议栈实现数据传输,分层结构如下:
业务应用层
- 实现具体业务逻辑(如传感器数据上报、远程控制指令下发)。
MQTT 协议核心层
- 连接管理:
CONNECT/CONNACK
报文建立客户端与代理(Broker)的连接。 - 消息发布/订阅:
PUBLISH
传输消息,SUBSCRIBE/UNSUBSCRIBE
管理订阅关系。 - 服务质量(QoS):支持 3 种消息传递保障级别:
QoS 0
(最多一次)QoS 1
(至少一次)QoS 2
(恰好一次)
TCP 传输层
- 提供可靠传输,确保数据包顺序和完整性。MQTT 默认端口为
1883
(明文)或8883
(TLS 加密)。
IP 网络层 & 数据链路层 & 物理层
- 负责基础网络寻址和数据帧传输(如 Wi-Fi、蜂窝网络、以太网)。
关键组件
- 发布者(Publisher):向指定主题发送消息的设备或服务。
- 订阅者(Subscriber):订阅主题并接收消息的终端。
- 代理(Broker):消息中转服务器(如 Mosquitto、EMQX),负责匹配主题并转发消息。
典型应用场景
- 远程监控(传感器数据上报)
- 智能家居(设备状态同步)
- 车联网(实时位置追踪)
与其他协议对比
特性 | MQTT | HTTP | CoAP |
---|---|---|---|
传输层 | TCP | TCP | UDP |
消息模式 | 发布/订阅 | 请求/响应 | 请求/响应 |
头部开销 | 极小 | 大 | 中等 |
MQTT 的高效性和灵活性使其成为物联网领域的主流协议之一。