MQTT协议

MQTT协议

Message Queuing Telemetry Transport

MQTT教程涵盖MQTT体系结构,MQTT工作操作和MQTT用例,包括消息流。它提到了MQTT,REST和HTTP之间差异的链接。它用于物联网无线技术,如zigbee,LoRaWAN等。

MQTT协议

图1描绘了MQTT架构。如上所述,MQTT是基于代理的协议。为此,设备(即客户端)通过代理进行通信。代理是一个可以安装在云中的任何机器上的服务器。有不同类型的经纪人,如HiveMQ,Mosquitto等。单个客户和经纪人也可以相互沟通。

下表提到了客户端和Broker之间使用的MQTT消息。由于MQTT在TCP / IP层之上运行,因此它也是面向连接的协议。客户端在通信之前与代理(即服务器)建立连接。MQTT是一种发布 - 订阅协议。在这里,客户端和服务器使用“PUBLISH”消息相互发布关于任何信息(即诸如温度,湿度,事件(ON / OFF)等参数)。任何数量的客户端或终端设备都可以与代理订阅事件。由于此订阅,当任何事件或参数发生变化时,经纪人将与订阅的客户有关事件或参数(即温度,湿度等)的变化。

MQTT消息

描述流向

CONNECT 客户端到服务器(即代理),客户端请求与服务器连接。
CONNACK 服务器到客户端,连接确认
发布 客户端到服务器或服务器到客户端
发布消息
PUBACK 客户端到服务器或服务器到客户端
发布确认
PUBREC 客户端到服务器或服务器到客户端
发布收到
PUBREL 客户端到服务器或服务器到客户端
发布版本
PUBCOMP 客户端到服务器或服务器到客户端
发布完成
订阅 客户端到服务器
客户端订阅请求
SUBACK 服务器到客户端
订阅确认
退订 客户端到服务器
取消订阅请求
UNSUBACK 服务器到客户端
取消订阅确认
PINGREQ 客户端到服务器
Ping请求
PINGRESP 服务器到客户端
PING RESPONSE
断开 客户端到服务器,客户端正在断开连接

 


MQTT协议

图2描绘了MQTT消息格式。它由固定的消息头,变量头和有效负载组成。大多数消息类型使用前两个字节。很少有消息类型使用变量头和有效负载。

MQTT工作操作| MQTT用例

MQTT协议

让我们了解MQTT协议的工作操作。图-3描绘了客户端和代理之间的MQTT消息流。我们将采用两个用例来理解相同的情况。

用例#1: Broker想要打开或关闭与远程客户端连接的灯#
1➨最初由客户端#1与代理使用CONNECT和CONNACK消息建立连接。 
➨下一个经纪人与客户#1通信,以打开或关闭与其接口的灯。PUBLISH和PUBREC等消息用于它。 
此用例用于在zigbee或LoRaWAN网络中打开/关闭路灯。灯通常与这些无线网络中的终端节点或终端设备连接。单个Zigbee或LoRaWAN网关控制多个终端节点。需要多个这样的网关来覆盖整个城市。

使用案例#2:客户#2或客户#3希望根据传感器更新温度/湿度状态
➨客户#2和客户#3将使用PUBLISH消息更新到代理的温度或湿度。该信息存储在数据库中,并将发送给订阅了这些主题的所有订户(即温度,湿度)。这些信息被“推送”到主题的所有订阅客户端。 
➨如果客户#1已经订阅了主题(即温度,湿度)的订阅,它将使用PUSH操作从代理获取信息。
该用例用于在有任何更新时自动获得不同类型的传感信息。为此,不同类型的传感器(例如湿度传感器,温度传感器等)与端节点连接。这些端节点向代理发布(任何事件更新的)信息。经纪人暗示对所有订阅客户的更改。

 

MQTT协议

MQTT协议

图1描绘了MQTT架构。MQTT是Message Queue遥测传输的缩写形式。如图所示,它由集中式代理组成,其中终端设备之间的所有通信都通过代理。代理可以安装在任何公共服务器上。MQTT基于发布/订阅体系结构,其中每个终端设备可以发布主题,也可以订阅任何主题。它建立在TCP协议之上。这里在通信之前建立连接。在MQTT协议中,需要用户名和密码来建立连接。 

REST协议

MQTT协议

图2描绘了REST协议栈。REST是Representational State Transfer的缩写形式。如图所示,它建立在HTTP / TCP层上。REST协议使用基于总线的体系结构,其中不需要代理组件,终端设备可以直接通信。在此请求和响应消息中,在终端设备之间使用以交换信息。

下表提到了MQTT和REST协议之间的比较。

特征

MQTT

REST

Full Form Message Queue Telemetry Transport Representational State Transfer
Messages used Connect, connect ack, publish, publish ack, subscribe, subscribe ack, disconnect etc. GET, PUT, POST and DELETE
Architecture Publish/Subscribe Request/Response
Need of centralized broker required, end devices communicate via broker not required, end devices direct communicate
Transport protocol TCP/IP TCP/IP
Security protocol TLS HTTPS
fault tolerance broker in SPoF server in SPoF
Interoperability foundational semantic
scope device to cloud 
cloud to cloud
device to cloud 
cloud to cloud

 

posted on 2018-08-29 17:09 sundaygeek 阅读(...) 评论(...) 编辑 收藏