f2cc0f9d3128edb5e7f4a18e0ea47a62.png

题目

大家好,又和大家见面了,超子我能力有限,水平不高,有什么错误的地方,欢迎板砖。超子在《阿里云物联网平台使用心得(七)MQTT协议14个报文总览》一文中介绍过,固定报头是MQTT协议中14个报文都必须包含的成员。我们看下它的格式

7ff7e10cb65e39e46b9c421458b8d16c.png

固定报头格式

上图中显示固定报头有2个字节,但是超子在这里给大家预告下,剩余长度=可变报头长度+负载长度,而且根据具体的值,剩余长度最少1个字节,最多4个字节,那么固定报头的长度就是,最少2个字节,最多5个字节。

接下来分析固定报头中的byte1,包含两个部分,MQTT控制报文类型和用于指定控制报文类型的标志位。

(1)MQTT控制报文类型,回想《阿里云物联网平台使用心得(七)MQTT协议14个报文总览》,每一个报文都有一个值,看下图红圈圈起来的部分。

3dd06c4d2eb940cc05ee14e8e682643a.png

MQTT控制报文类型的来源

这个“值”就是byte1中MQTT控制报文类型的值,总共14个报文,那么就是 0x1~0xE。

(2)用于指定控制报文类型的标志位,这个标志位看下图的总结

af895e2deb15f9a9a32954c5578df04f.png

控制报文类型的标志位总结图

然后超子把(1)和(2)组合起来总结一下,如下图所示

c0316f26583ae677c363941af530e663.png

各个报文固定报头byte1总结图

除了PUBLISH报文,其余13个报文固定报头中的byte1就搞定了,下次超子给大家介绍固定报头中的剩余长度,这个是MQTT协议中最麻烦的一个知识点了。

Logo

魔乐社区(Modelers.cn) 是一个中立、公益的人工智能社区,提供人工智能工具、模型、数据的托管、展示与应用协同服务,为人工智能开发及爱好者搭建开放的学习交流平台。社区通过理事会方式运作,由全产业链共同建设、共同运营、共同享有,推动国产AI生态繁荣发展。

更多推荐