MQTT控制报文(连接)

1.CONNECT – 连接服务端

1.1 可变报文 (协议名 + 协议级别 + 连接标志 + 保持连接)

1.1.1 协议名(内容固定,标识是MQTT协议 。 前2个字节表示长度,后4个字节ASCII码的MQTT)

1.1.2 协议级别(8位的无符号值表示协议的修订版本,对于3.1.1版协议,协议级别字段的值是4(0x04))

1.1.3 连接标志

注:第0位一定是0

Clean Session:客户端和服务端可以保存会话状态,以支持跨网络连接的可靠消息传输

0:(false)缓存住连接断开时的所有Qos 1 和Qos 2级别的消息

1:(true) 重连时不会收到旧消息

Will Flag:遗嘱标志

1:遗嘱消息会存储在服务器,网络连接关闭时服务器发布这个遗嘱消息,除非收到主动发送的disconnect报文,会删除这个遗嘱。主要目的 就是非主动断开连接(网络断开等)时的处理

Will QoS:遗嘱消息 服务质量等级(0  1  2  )

Will Retain:遗嘱标志是1时才有效,将遗嘱消息当作 非保留消息/保留消息 发布

Password Flag:用户名标志是0,则密码也必须是0;1 有密码

User Name Flag:1 有用户名

1.1.4 保持连接 Keep Alive(心跳包)

在KeepAlive时间内(单位秒)发送PINGREQ报文,使用返回的PINGRESP报文判断网络和服务端的活动状态

可变报头非规范示例

1.2 有效载荷 Payload

组成:客户端标识符,遗嘱主题,遗嘱消息,用户名,密码 

1.2.1 客户端标识符ClientId(UTF-8编码字符串)

只能是数字和字母

1.2.2 Will Topic

1.2.3 Will Message  2个字节的遗嘱长度+遗嘱消息

1.2.4 User Name 服务端可以将它用于身份验证和授权

1.2.5 Password  2个字节的数据长度+数据

 

2.CONNACK – 确认连接请求

2.1 固定报头

2.2 可变报头(2个字节)

第一个字节:连接确认标志

第1-7位:保留,都设置位0 

第0位:(Session present)connect的cleanSession是1就设置成0;cleanSession是0,如果服务端已经保存了会话状态则是1,否则是0

 

服务端的连接返回码不是0,session present必须是0;

第二个字节:连接返回码

 

### 回答1: 这是MQTT协议中CONNACK消息的回复(Return Code),表示连接已经被接受并且连接已经建立。具体含义如下: - 0x00:连接已被接受。 - 0x01:连接被拒绝,协议版本不支持。 - 0x02:连接被拒绝,客户端标识符被拒绝。 - 0x03:连接被拒绝,服务端不可用。 - 0x04:连接被拒绝,用户名或密错误。 - 0x05:连接被拒绝,未授权。 在这里,回复为0x01,表示连接被拒绝,协议版本不支持。这可能是由于客户端和服务端使用了不同的MQTT协议版本,导致连接无法建立。你可以检查一下客户端和服务端所使用的MQTT协议版本是否一致。 ### 回答2: MQTT连接报文回复"20 02 01 00"表示连接确认,具体解释如下: - "20"表示CONNECT ACK报文控制报文类型。 - "02"表示CONNECT ACK报文的固定报头剩余长度。 - "01"表示CONNECT请求被接受并且成功。 - "00"表示CONNECT ACK报文的返回为Connection Accepted,即连接被接受。 这个报文MQTT客户端发起连接请求后,服务器返回的确认报文。其中,报文类型确定了这是一个CONNECT ACK报文,剩余长度表明报文内容的长度为2个字节。返回为"01"表示连接请求被服务器接受并成功建立了连接。返回为"00"表示连接被接受。 这个确认报文告知MQTT客户端连接已经建立成功,客户端可以开始进行后续的MQTT通信,发送和接收消息。客户端可以根据返回的连接确认报文中的返回来判断连接的建立是否成功,如果返回为"01",说明连接成功,客户端可以发送订阅、发布等控制报文,如果返回为其他值,说明连接失败,客户端需要重新尝试建立连接或进行其他处理。 综上所述,报文"20 02 01 00"表示MQTT连接被成功接受,连接已经建立。 ### 回答3: MQTT连接报文回复20 02 01 00的意思是连接请求被接受。 其中,20是报文类型,表示这是一个连接回复报文;02是固定报文头部的字节长度;01表示返回值,00表示连接请求被接受。 当客户端发送一个连接请求给MQTT服务器时,服务器会对该请求进行处理并作出回应,这里的回应就是连接回复报文。回复报文中的返回值01表示连接请求被接受,服务器同意与客户端建立连接。 这个连接回复报文的成功意味着客户端与服务器之间的身份验证和握手过程已经完成,连接已建立。接下来客户端和服务器就可以开始进行MQTT消息的发布和订阅等数据交互操作了。 总结起来,mqtt连接报文回复20 02 01 00表示服务器接受了客户端的连接请求,连接成功建立。这是MQTT协议中的一个重要步骤,标志着客户端可以开始与服务器进行通信。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值