MQTT协议
MQTT协议
Message Queuing Telemetry Transport
此MQTT教程涵盖MQTT体系结构,MQTT工作操作和MQTT用例,包括消息流。它提到了MQTT,REST和HTTP之间差异的链接。它用于物联网无线技术,如zigbee,LoRaWAN等。
图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 |
断开 | 客户端到服务器,客户端正在断开连接 |
图2描绘了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协议
图1描绘了MQTT架构。MQTT是Message Queue遥测传输的缩写形式。如图所示,它由集中式代理组成,其中终端设备之间的所有通信都通过代理。代理可以安装在任何公共服务器上。MQTT基于发布/订阅体系结构,其中每个终端设备可以发布主题,也可以订阅任何主题。它建立在TCP协议之上。这里在通信之前建立连接。在MQTT协议中,需要用户名和密码来建立连接。
REST协议
图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 阅读(...) 评论(...) 编辑 收藏