码迷,mamicode.com
首页 > 其他好文 > 详细

MQTT之固定报头分析

时间:2020-05-15 15:40:09      阅读:219      评论:0      收藏:0      [点我收藏+]

标签:客户端   fixed   reserve   分发   mqtt   长度   不能   log   head   

版本3.11

MQTT报文结构

1.Fixed header 固定报头,所有报文都包含
2.Variable header 可变报头,部分报文包含
3.Payload 有效载荷,部分报文包含

固定报头

固定报头 固定占2个字节
第一个节前4位表示报文类型后四位表示报文的标志
第二个字节表示剩余报文的长度

报文类型

技术图片
比如建立连接的前四位报文为0001,则转换成十进制=1,刚好对应上表中的CONNECT,也就是客户端请求连接服务端的意思
技术图片

报文标志

继续上面那个图,紧跟着0001后面的后四位报文为0000,表示缺省(Reserved),一般这四位用于表示消息安全等级,重复分发标志,保留消息等
技术图片

举个例子
当发送一条(消息安全等级)QoS=2的消息时,固定报头的第一个字节为:
技术图片

这里可以看到,前四位0011转换成10进制就是3也就是对应报文类型的3 PUBLISH也就是发布消息类型的报文
后四位0100,这里就不能转十进制了 ,可以直接对应报文标志图的四个(3210)比特位,这里很明显0100对应的是QoS2,
同理如果后四位是0010,那么对应就表示是一条QoS1的消息

剩余报文长度

这个很好理解,表示本次报文的剩余长度(字节位数)
技术图片
比如这个红色框的报文转换成十进制是29,则表示还有29个字节是本次报文的,绿色框则就是剩余的报文了,刚好是29个,不信你数数

MQTT之固定报头分析

标签:客户端   fixed   reserve   分发   mqtt   长度   不能   log   head   

原文地址:https://www.cnblogs.com/AngeLeyes/p/12894958.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!