MQTT协议简介

简介

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

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值