带你了解MQTT协议

网络
目前MQTT协议被广泛应用于自动驾驶、工业、通信等领域。本文将详细介绍MQTT协议的特点、如何运作等相关问题。

作者 | 王映月,单位:中国移动智慧家庭运营中心

​Labs 导读

目前MQTT协议被广泛应用于自动驾驶、工业、通信等领域。而在智能家居领域市场上,中国移动、华为、阿里、腾讯等多家IoT平台都支持MQTT协议接入。本文将详细介绍MQTT协议的特点、如何运作等相关问题。

MQTT是结构化信息标准促进组织(OASIS,Organization for the Advancement of Structured Information Standards)标准下的物联网消息传递协议,其轻量级的发布/订阅传输机制,非常适合为远程连接设备提供可靠的消息通信服务。目前MQTT协议被广泛应用于自动驾驶、工业、通信等领域。而在智能家居领域市场上中国移动、华为、阿里、腾讯等多家IoT平台都支持MQTT协议接入。

图片

Part 01MQTT协议的特点 

- 轻量高效

只需极少的资源即可实现MQTT客户端,这使得MQTT协议可以轻松地在微型芯片上运行。极简报文设置实现最小网络开销。

- 范围广播

轻松实现百万设备消息广播。

- 稳定传输

3种消息传输保障等级,提供不同场景下消息传递的可靠性保证。

- 弱网支持

会话保持机制减少弱网环境下设备重连时间。

- 安全保障

支持多种认证协议保障消息安全

Part 02MQTT协议是怎么工作的 ● 

MQTT协议定义了消息代理节点(Broker)及MQTT客户端(Client),两种网络实体类型。Broker接收Client发送的消息并负责转发这些消息到指定的Client。Client是能与Broker产生交互的任何实体,负责发送与接收消息。常见的Client比如IoT传感器,云端服务器。可见在MQTT协议中消息是通过Broker进行转发的,而不是由一个Client与另一个Client直接连接通信。为了区分,我们可以把Client定义为消息发送者(Publisher-Client)与消息接收者(Subscriber-Client)。

  • Client与Broker建立连接,该连接可以是一个TCP/IP连接,也可以是一个加密的TLS连接。
  • Subscriber-Client订阅一个主题(Topic)。
  • Publisher-Client发送某个Topic消息到Broker。
  • Broker将该条消息转发给所有订阅该Topic的Subscriber-Client。

图片

Part 03MQTT协议质量保障 

众所周知,物联网设备往往处在复杂的网络环境下,比如农业物联网中,蔬菜大棚的传感器设备;工业物联网中,封闭车间的温湿度传感器等等。在这些复杂网络场景下,设备状态是无法确定的,为了在这些场景下保障连接,MQTT协议提供了消息服务质量保障等级(Qos,Quality of Service levels)。

  • Qos-0最多一次

Qos 0 保障消息到达终点最多不超过1次。消息可能到达1次或根本不会到达。适用于功率受限设备,可以最大减少传播时间,减少消息传递成本;适用于非关键消息传递,例如被频繁重复发送的消息。

图片

  • Qos-1 最少一次

Qos 1保障消息到达终点最少不低于1次。Broker在确认接收消息后会返回一个PUBACK消息给到Publisher-Client。如果消息发送失败,Publisher-Client将在一段时间后重发消息。此类型消息适用于重要不可丢失的消息传递,可利用该传输机制保证消息在离线设备上线后仍能收到。Subscriber-Client需要做好重复消息处理工作。

图片

  • Qos-2 只有一次

Qos 2 保障消息到达终点只有1次。此类消息保证接接收端对于一条消息只接收一次,是MQTT协议中最安全且传输速度最慢的一种消息传递形式。适用于十分重要且不允许重复消息出现的场景使用,由于消息十分重要,因此可忽视额外的网络开销。

图片

Part 04最小MQTT应用搭建

在了解MQTT理论基础概念后,我们一起在Windows系统上搭建一个最小MQTT服务,实现MQTT消息的发送及订阅。

(1) Broker搭建

我们选择开源代理平台Mosquitto作为此次最小MQTT应用的单点Broker。

将Mosquitto Windows版下载完成后,通过Windows系统终端打开mosquitto.exe文件。输入./mosquitto.exe -p 1883 即在Windows系统上启动了一个MQTT服务,监听地址为127.0.0.1,端口是1883。

(2) Client搭建

完成Broker搭建后,我们还需要Client实现消息的发送和订阅。我们选择mqtt.fx软件作为此次最小MQTT应用的Client。打开mqtt.fx软件,我们通过设置MQTT Broker Address为127.0.01,Broker Port为1883,并自定义Client ID。完成设置后,点击主页面的Connect,页面右上角的连接指示灯显示为绿色即表示完成了连接,此时我们实现了Client到Broker的连接。

(3) 消息订阅

假定步骤二创建的Client为一个Subscriber-Client,此时通过点击主页面中的Subscribe,填写订阅Topic信息,在示例中我订阅的Topic为test,即可完成该Client对于该Topic订阅。

(4) 消息发送

重新打开一个mqtt.fx客户端,创建一个Publisher-Client,设置MQTT Broker信息与Subscriber-Client信息一致,成功连接Broker后,在Publish页面下,向指定Topic即test发送信息,此时我们可以在Subscriber-Client界面上看到消息成功的从Broker转发至Subscriber-Client。

至此一个最小的MQTT应用就搭建完成了。

图片

综上所述,MQTT协议关注于消息,拥有轻量、高效、低开销等特性,相对于HTTP等广泛应用于互联网场景的协议来说,MQTT协议与物联网通信领域更加契合。​

责任编辑:未丽燕 来源: 移动Labs
相关推荐

2010-07-05 16:20:32

NetBEUI协议

2022-02-25 07:34:36

MQTT协议RabbitMQ

2010-09-02 16:59:35

资源预留协议

2010-07-06 17:14:03

网关通信协议

2022-02-24 07:34:10

SSL协议加密

2023-12-06 16:28:56

2020-11-17 08:59:28

MQTT

2018-08-17 06:13:16

物联网协议MQTTMQTT-SN

2024-03-26 11:52:13

2023-03-20 16:16:40

MQTT传输协议

2019-09-27 09:40:06

ElvishShellLinux

2019-07-09 08:29:51

TCPIP协议

2022-06-27 10:41:45

MQTT物联网协议

2021-07-05 22:22:24

协议MQTT

2023-09-24 23:18:50

2020-12-31 12:16:49

SAP云计算SAP产品

2021-02-03 16:22:43

新基建SAP

2020-11-18 11:36:35

鸿蒙系统

2022-05-17 11:06:52

车联网通信协议MQTT

2023-09-07 14:59:42

物联网MQTTCoAP
点赞
收藏

51CTO技术栈公众号