MQTT协议内容1

Wirshop  

基于TCP/IP协议之上的 

 

 后续字节的个数

后续发布心跳请求的时候,只需要把消息类型12,

0-255,一共256种可能

 

 1、Retain 是否进行消息的保留,0-1,一个位1:服务端需要存储信息

2、Qos:服务质量,两个位

AtMostOnce:0、最多一次:质量差,甩锅

AtLeastOnce:1、至少一次,至多无限,可能很多次,保证收到,确定收到回复为止

有发有回,中途断掉回重发一次

 

ExactlyOnce:2、有且仅有一次

两次确认的过程

1、你收到信了吗?--收到了

2、你确认收到了吗?--收到了

 Packget Identifier

id如果重复,就退回,不做任何处理,不会重复处理多次

 

3、DUP重发次数

错误的时候重发

设置为1,代表重发,默认为0

 

 

4、消息类型

功能码

14种。3.0

5.0有15种

1-15都用了,没法扩展

 

 

MQTT长度就是4

MQISDP就是6

 两个字节,最长65535长度,有点浪费,太长前面固定报文长度不支持,最多255

 

4代表3.1.1的标准

 

 Keep Alive长连接时间,100秒

尽量保证连接状态,

也有可能断掉,服务端也可能踢掉

两个操作:订阅/发布,就是两个动作,要保证在100秒之内

 

只订阅,不发布的,100秒之后可能被踢掉

每隔一段时间发送一个空包,心跳请求,返回心跳确认

本身没有动作,而是用心跳来弥补动作

抓包工具会抓到,ping 

 

N+2连接标志

X:没什么用,保留字段

clean session :session就是会话,保存信息,是否保存前一个状态,一般设置1存储

Will Flag:是否保存, 前两个信息Will Retain和Qos,其实两个和前面头重复,也有些冗余 

  协议建议:以最小值为准

 Qos两位四种值,11没有用,00代表0,01代表1,10代表2

1的话,都可以设置

0的时候,前面两个值必须为0,协议规定的,也可自己处理

 

密码标记

用户名标记0:不使用,1使用

 

posted on 2025-02-28 15:51  张彦山  阅读(20)  评论(0)    收藏  举报