简介
MQTT全称为 Message Queuing Telemetry Transport(消息队列遥测传输)是一种基于发布/订阅范式的,非常适合小型设备或网络糟糕的环境下,因此被广泛应用于IoT系统中。
MQTT工作在应用层,一般借助TCP/IP实现数据包传输功能,MQTT在传输层上传输的是流数据,因此理论上MQTT可以使用任何有线或无线的传输介质实现数据包传输。
MQTT基于发布/订阅机制,一个通讯链路分工主要分为三种身份:发布者(publisher)、代理(broker)和订阅者(subscriber)。消息的分发和权限控制由主题(topic)实现。

协议格式
目前应用比较广泛的是MQTT3.1.1,这个版本包括各种数据传输所需的功能和特征,而且对应生态非常成熟,因此以MQTT 3.1.1为例介绍一下MQTT的协议格式。
MQTT控制报文主要由三个部分组成

固定报头:固定报头有2byte,其中报文类型共有14种,标志在MQTT 3.1.1中只用了一种。
剩余长度用于指定从第二个字节开始的剩余字节数。

可变报头:可变报头的报文标识符主要用于提高消息传输可靠性,原理类似于TCP协议中的包序号,因此高QoS下需要可变报头。

载荷:载荷是需要传递的具体内容,只有部分报文需要载荷
MQTT本身是一种轻量级通讯协议,协议格式的主要就这三部分,具体的各种标志符定义可以参照附件提供的MQTT 3.1.1协议文档。
可靠性控制QoS
QoS是消息传递的服务质量水平,分为3级。
QoS Level0:至多一次,只发一次,不确保到达。
QoS Level1:至少一次,确保消息到达但可能有重复
QoS Level2:只有一次,确保消息到达且无重复
遗嘱机制
Last will&Testament:遗嘱机制,发布者在正常连接时可以在代理服务器上存储一个遗嘱,当该发布者意外断开后服务器会向所有相关订阅者发送这条遗嘱。
MQTT 3.1.1核心的内容就是这些,下一篇文章可能会介绍一下如何在服务器上搭建代理(broker)以及在stm32f103等单片机上移植MQTT协议的相关内容。
MQTT3.1.1协议文档:https://download.csdn.net/download/CSDN1344789841/15995014
本文链接:https://blog.csdn.net/CSDN1344789841/article/details/115036697
转载需标明出处
参考文章:https://www.jianshu.com/p/ecde412d2eeb
738

被折叠的 条评论
为什么被折叠?



