物联网——MQTT协议

 物联网报文的基本内容

报文描述流向序列固定报头可变报头负载
CONNECT 客户端请求与服务器连接单向C->S1
CONNACK服务端确认连接建立单向S->C2
PUBLISH发布消息双向C<->S3
PUBACK收到发布消息确认(QoS1等级)双向C<->S4
PUBREC发布消息收到(QoS2等级)双向C<->S5
PUBREL发布消息释放(QoS2等级)双向C<->S6
PUBCOMP发布消息完成(QoS2等级)双向C<->S7
SUBSCRIBE订阅请求单向C->S8
SUBACK订阅确认单向S->C9
UNSUBSCRIBE取消订阅单向C->S10
UNSUBACK取消订阅确认单向S->C11
PING客户端发送PING(保活)命令单向C->S12
PINGGRSPPING命令回复单向S->C13
DISCONNECT断开连接单向C->S14

红色字体:双向发布消息均可收到;

CONNECT :客户端请求与服务器连接

        1、固定报头2个字节

                ① 第一个表示序列号(规定好了)(10)

                ② 第二个表示可变报头+负载字节的数量

        2、可变报头10个字节

                ① 协议名:6个字节(规定好了)( 00 04 4D 51 54 54)

                        00 04:表示协议名字大小4个字节;

                        4D 51 54 54:表示 MQTT;

                ② 协议级别:1个字节(规定好了)(04)     

                ③ 连接标志:1个字节(规定好了)(C2)

                        

                        bit7:有没有用户名(置1:存在用户名) 

                        bit6:有没有密码(置1:存在密码) 

                        bit5:置0(很难理解的一个东西,不需要去尝试理解,会配置就可以了)

                        bit4-3:都置0,选择QoS0的传送数据的方式,服务器对这种方式反应最快

                        bit2:置0(很难理解的一个东西,不需要去尝试理解,会配置就可以了)

                        bit1:置0(很难理解的一个东西,不需要去尝试理解,会配置就可以了)

                        bit0:必须置0,标志位,否则服务器会直接断开连接

                 ④ 保持连接:2个字节,表示保持连接时间大小, 规定好了(00 64)表示100秒

                       

            3、负载有n个字节(按负载包括内容大小)

                 ① 客户端ID: 客户端ID数量大小(两个字节)+客户端ID;(字节数=2+客户端ID)

                 ② 用户名: 用户ID数量大小(两个字节)+用户名;           (字节数=2+用户名)

                 ③ 密码: 用户ID数量大小(两个字节)+密码;                   (字节数=2+密码)

                 (用户ID,用户名,密码全部都得转化成十六进制) 

     客户端请求与服务器连接时:固定报头+可变报头+负载(串起来)一起发送出去;

SUBSCRIBE:订阅请求

         1、固定报头2个字节

                ① 第一个表示序列号(规定好了)(82)

                ② 第二个表示可变报头+负载字节的数量

        2、可变报头2个字节(规定好了)(00 0A)

        3、负载有n个字节(主题过滤器+服务质量要求)

                ① 主题过滤器(Topic):设备名称字节数+设备名称

                ② 服务质量要求(1个字节):也就是QoS要求,设为00

      客户端发出订阅请求时:固定报头+可变报头+负载(串起来)一起发送出去;

 PUBLISH:发布消息(客户发送到服务端)

          1、固定报头2个字节

                ① 第一个表示序列号(规定好了)(30)

                ​​​​​​​        

                ② 第二个表示可变报头+负载字节的数量

        2、可变报文n个字节

                主题名(Topic):设备名称字节数+设备名称+00(QoS0模式)

        3、负载:数据的内容和格式是应用特定的

  • 2
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

薛定谔的猫咪死了

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值