物联网平台通信协议之 MQTT 协议
文章目录
- 物联网平台通信协议之 MQTT 协议
-
- MQTT 概述
-
- MQTT 数据格式
MQTT 概述
MQTT( Message Queuing Telemetry Transport ),消息队列遥测传输协议,是一种基于发布/订阅( publish/subscribe )模式的”轻量级”通讯协议,该协议构建于 TCP/IP 协议上。
其设计思想是轻巧、开放、简单、规范,因此易于使用和开发。
MQTT最大优点在于,可以以极少的代码和有限的带宽,为连接远程设备提供实时可靠的消息服务。作为一种低开销、低带宽占用的即时通讯协议,使其在物联网、小型设备、移动应用等方面有较广泛的应用。
MQTT 特点如下:
序号 | 特点 |
---|---|
1 | 使用发布/订阅消息模式,提供一对多的消息发布,解除应用程序耦合。不用单独推送给某个用户,只需要用户订阅,就能同时发送给多个用户。 |
2 | 消息传输不需要知道负载内容(基于主题)。 |
3 | 有三种消息发布服务质量,可粗略理解为:“至多一次”、“至少一次”和只有一次。 |
4 | “至多一次”:消息发布完全依赖底层 TCP/IP 网络。会发生消息丢失或重复。这一级别可用于如下情况,环境传感器数据,丢失一次读记录无所谓,因为不久后还会有第二次发送。若当时设备未连接网络,未收到推送,则下次联网也不会收到之前丢失的数据。 |
5 | “至少一次”:确保消息到达,但消息重复可能会发生。 |
6 | “只有一次”:确保消息到达一次。在一些要求比较严格的计费系统中,可以使用此级别。在计费系统中,消息重复或丢失会导致不正确的结果。这种最高质量的消息发布服务还可以用于即时通讯类的APP的推送,确保用户能收到且只会收到这一次。 |
7 | 小型传输,开销很小,协议交换最小化,以降低网络流量。 |
8 | 异常连接断开发生时,能通知到 各方相关。 |
MQTT 数据格式
MQTT 数据包包括了固定头、可变头和消息体。
- 固定头:存在于所有MQTT数据包中,表示数据包类型及数据包的分组类标识;
- 可变头:存在于部分MQTT数据包中,数据包类型决定了可变头是否存在及其具体内容;
- 消息体:存在于部分MQTT数据包中,表示客户端收到的具体内容;
bit | 7 | 6 | 5 | 4 | 3 | 2 | 1 | 0 |
---|---|---|---|---|---|---|---|---|
byte 1 | 消息类型 | DUP | Qos Level | RET | ||||
byte 2 | 剩余字节长度 | |||||||
byte 3 ~ n | 可变头 | |||||||
byte n+1 ~ m | 消 息 体 |
上表中粗略展示了 MQTT 协议的数据包结构,其中:
-
MQTT消息类型 / message type :属于固定头,位置是 byte 1 的 bit 7-4,4位的无符号值。
-
标识位 / DUP:发布消息的副本。用来在保证消息的可靠传输,如果设置为 1 ,则在下面的变长中增加 MessageId ,并且需要回复确认,以保证消息传输完成,但不能用于检测消息重复发送。
-
QoS Level/发布消息的服务质量:也就是上述 MQTT 特点中的三种消息发布质量。
-
RET :发布保留标识,表示服务器要保留这次推送的信息,如果有新的订阅者出现,就把这消息推送给它,如果设有那么推送至当前订阅者后释放。
-
剩余长度:固定头的第二字节,用于保存变长头部和消息体的总大小的,但不是直接保存的。这一字节是可以扩展的,其保存机制为:前 7 位用于保存长度,后一部分用做标识。当最后一位为 1 时,则表示长度不足,需要使用二个字节继续保存。
-
可变头:可变头的内容因数据包类型而不同,较常的应用是做为包的标识。
-
消息体:消息体是MQTT数据包的第三部分,CONNECT、SUBSCRIBE、SUBACK、UNSUBSCRIBE四种类型的消息 有消息体:
1、CONNECT 消息体内容主要是:客户端的 ClientID 、订阅的 Topic 、 Message 以及用户名和密码;
2、SUBSCRIBE 消息体内容是一系列的要订阅的主题以及 QoS 。
3、SUBACK 消息体内容是服务器对于SUBSCRIBE所申请的主题及QoS 进行确认和回复。
4、UNSUBSCRIBE 消息体内容是要订阅的主题。
相关推荐: 中国广电5G真要来了!首批用户享6折;联想自研5nm芯片流片成功,网友质疑;丨云腾五洲IoT周报
编辑:Enzo 疫情数据来源:百度 9月18日 | 星期日 特别说明 AIoT Headline 很多读者在后台询问为什么有时候会看到几天前重复的新闻,这是因为头条君每周日(每周仅一次)早晨发布的是本周要闻汇总,即选取本周内的大新闻进行分类和评论,特此说明!感…