MQTT(Message Queuing Telemetry Transport,消息列队遥测传感技术)是一种基于发布、订阅的(publish/subscribe)模式的“轻量级”通讯协议,该协议构建于TCP/IP协议之上,由IBM于1999年发布。

MQTT协议最大的优点在于:

  • 可以使用极少的代码和有限的带宽,为远程设备提供实时的可靠地消息服务
  • 机器与机器(M2M)通信和物联网(IOT)

1. MQTT协议特点

MQTT是一个基于客户端-服务器的消息发布/订阅传输协议MQTT协议当前版本为,2014年发布的MQTT v3.1.1。除标准版外,还有一个简化版MQTT-SN,该协议主要针对嵌入式设备,这些设备一般工作于百TCP/IP网络,如:ZigBee。

MQTT协议运行在TCP/IP或其他网络协议,提供有序、无损、双向连接。其特点包括:

  • 使用的发布/订阅消息模式,它提供了一对多消息分发,以实现与应用程序的解耦。
  • 对负载内容屏蔽的消息传输机制。
  • 对传输消息有三种服务质量(QoS):
    • 最多一次,这一级别会发生消息丢失或重复,消息发布依赖于底层TCP/IP网络。即:<=1
    • 至多一次,这一级别会确保消息到达,但消息可能会重复。即:>=1
    • 只有一次,确保消息只有一次到达。即:=1。在一些要求比较严格的计费系统中,可以使用此级别
    • 数据传输和协议交换的最小化(协议头部只有2字节),以减少网络流量
    • 通知机制,异常中断时通知传输双方
    • 使用 Last Will 和 Testament 特性通知有关各方客户端异常中断的机制;

2. MQTT协议的原理

2.1 MQTT协议的实现方式

mqtt_1

  • 实现MQTT协议需要客户端和服务端
  • MQTT协议有三种身份:发布者(publish)、代理服务器(broker)、订阅者(subscribe),其中publish/subscribe都是客户端,broker为服务器,消息的发布者也可以是订阅者。
  • MQTT协议的消息主要分为:
    • 话题(topic):消息的类型,订阅者订阅(Subscribe)后,就会收到该主题的消息内容(payload)
    • 负载(payload):消息的内容,订阅者具体的使用内容

2.2 网络传输与应用消息

MQTT会构建底层网络传输:它将建立客户端到服务器的连接,提供两者之间的一个有序的、无损的、基于字节流的双向传输。
当应用数据通过MQTT网络发送时,MQTT会把与之相关的服务质量(QoS)和主题名(Topic)相关连。