MQTT是一种客户机服务器发布/订阅消息传递传输协议。它重量轻、开放、简单、设计简单、易于实现。这些特性使其非常适合在许多情况下使用,包括受限的环境,如机器间通信(M2M)和物联网(IoT)环境,在这些环境中需要少量代码占用空间,并且/或网络带宽非常宝贵。
该协议在TCP/IP或其他提供有序、无损、双向连接的网络协议上运行。它的功能包括:
·使用发布/订阅消息模式,提供一对多的消息分发和应用程序解耦。
·与负载内容无关的消息传递传输。
·消息传递的三种服务质量:

·“最多一次”,根据操作环境的最大努力传递消息。可能会发生消息丢失。例如,这个级别可以用于环境传感器数据,在这些数据中,一个单独的读数是否丢失并不重要,因为下一个读数很快就会发布。
·“至少一次”,确保消息到达,但可能发生重复。
·“恰好一次”,确保消息准确到达一次。例如,在计费系统中,重复或丢失的消息可能导致不正确的收费,可以使用此级别。
·最小化传输开销和协议交换,减少网络流量。
·异常断开时通知相关方的机制。

应用程序消息:
MQTT协议为应用程序跨网络传输的数据。当MQTT传输应用程序消息时,它们具有相关的服务质量和主题名称。
客户:
使用MQTT的程序或设备。客户端总是建立到服务器的网络连接。它可以
·发布其他客户可能感兴趣的应用程序消息。
·订阅它感兴趣接收的请求应用程序消息。
·取消订阅以删除对应用程序消息的请求。
·断开与服务器的连接。
服务器:
在发布应用程序消息的客户端和已订阅的客户端之间充当中介的程序或设备。一个服务器
·接受来自客户端的网络连接。
·接受客户端发布的应用程序消息。
·处理来自客户端的订阅和退订请求。
·转发与客户端订阅匹配的应用程序消息。
订阅:
订阅包括主题筛选器和最大QoS。订阅与单个会话关联。一个会话可以包含多个订阅。会话中的每个订阅都有不同的主题筛选器。
主题名称:
附加到应用程序消息的标签,该消息与服务器已知的订阅相匹配。服务器向具有匹配订阅的每个客户机发送应用程序消息的副本。
主题过滤:
订阅中包含的一种表达式,表示对一个或多个主题感兴趣。主题筛选器可以包含通配符。
会话:
客户机和服务器之间的有状态交互。有些会话仅在网络连接期间持续,有些会话可以跨越客户机和服务器之间的多个连续网络连接。
MQTT控制包:
通过网络连接发送的信息包。MQTT规范定义了14种不同类型的控制包,其中一种(发布包)用于传递应用程序消息。