MQTT(Message Queuing Telemetry Transport,消息队列遥测传输)是 IBM 开发的一个即时通讯协议,它是一种轻量级的、基于代理的“发布/订阅”模式的消息传输协议。
MQTT 具有协议简洁、小巧、可扩展性强、省流量、省电等优点,比较适合于在低带宽、不可靠的网络的进行远程传感器和控制设备通讯等,正在日益成为物联网通信协议的重要组成部分。
MQTT 协议工作在低带宽、不可靠的网络的远程传感器和控制设备通讯而设计的协议,它具有以下主要的几项特性:
(1)使用发布/订阅消息模式,提供一对多的消息发布,解除应用程序耦合。
(2)对负载内容屏蔽的消息传输。
(3)使用 TCP/IP 提供网络连接。
(4)有三种消息发布服务质量:
(5)小型传输,开销很小(固定长度的头部是 2 字节),协议交换最小化,以降低网络流量。
它非常适合“在物联网领域,传感器与服务器的通信,信息的收集”,要知道嵌入式设备的运算能力和带宽都相对薄弱,使用这种协议来传递消息再适合不过了。
发布/订阅
消息生产者(发布)将消息发布到topic中,同时有多个消息消费者(订阅)消费该消息。
1.MQTT 是发布订阅(Publish/Subscribe) 模式的消息协议,与 HTTP 协议请求响应(Request/Response) 模式不同。
2.MQTT 发布者与订阅者之间通过“主题”(Topic) 进行消息路由,主题(Topic) 格式类似 Unix 文件路径,例如:
3.MQTT 消息发布者(Publisher)只能向特定“名称主题”(不支持通配符)发布消息
4.订阅者(Subscriber)通过订阅“过滤主题”(支持通配符)来匹配消息
(1)实现 MQTT 协议需要客户端和服务器端通讯完成,在通讯过程中,MQTT 协议中有三种身份:发布者(Publish)、代理(Broker)(服务器)、订阅者(Subscribe)。其中:
(2)MQTT 传输的消息分为:主题(Topic)和负载(payload)两部分: