zoukankan      html  css  js  c++  java
  • MQTT之固定报头分析

    版本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个,不信你数数
    如果udp位置为0,表示当前消息为第一次发送
    RETAIN 1:表示发送的消息需要一直持久保存,不但要发送给当前的订阅者,并且以后新来的订阅了此Topic name的订阅者会马上得到推送(只会收到最新的一条)
    RETAIN 1:表示只发送给当前在线的订阅者

  • 相关阅读:
    Oracle 分区表管理之组合分区(分区索引失效与性能比较以及12.2c分区表新特性)
    博客搬家了
    Java中文件操作
    Java中的LinkedList介绍
    Android数据缓存
    Android QQ空间浏览图片动画特效的实现(※)
    关于android中线性布局的layout_gravity属性
    Android中AutoCompleteTextView的使用
    Android中GridView使用总结
    Android实现自适应正方形GridView(陌陌引导页面效果)
  • 原文地址:https://www.cnblogs.com/AngeLeyes/p/12894958.html
Copyright © 2011-2022 走看看