MQTT协议之连接

女主宣言

在之前的文章中已简单介绍了MQTT协议报文的格式,本篇文章将对集中的连接协议进行详细的介绍,以及自己对该协议的一些思考和理解。

PS:丰富的一线技术、多元化的表现形式,尽在“HULK一线技术杂谈”,点关注哦!

640?wx_fmt=jpeg

1

CONNECT

客户端和服务端建立连接之后,发送的第一个报文必须是CONNECT。客户端只能发送一次CONNECT报文,如果服务端收到了第二个CONNECT报文,必须将其视为错误,并且断开连接。

协议格式

固定报头

640?wx_fmt=png

可变报头

可变报头分为四个部分,分别是协议名称(Protocol Name),协议级别(Protocol Level),连接标志(Connect Flags),保持连接(Keep Alive)。

协议名称

640?wx_fmt=png

1. 协议名是MQTT的UTF-8编码的字符串。MQTT规范的后续版本不会改变这个字符串的偏移和长度。

2. 如果协议不正确服务端断开连接。(MQTT 3.1.1)其他规范中可以有其他规范。

3. 数据包检测工具,可以使用协议名来识别MQTT流量。

协议级别

640?wx_fmt=png

1. 使用8位来表示协议的修订版本级别。MQTT3.1.1的协议级别为4。这个也是MQTT5的由来,MQTT5的协议级别为5,故称为MQTT5。

2. 服务端收到一个自己不支持的协议级别的时候,必须返回一个returnCode为0x01的CONNACK的报文给客户端,随后服务端断开相应的连接。

    连接标志

640?wx_fmt=png

3. 服务端必须校验连接标志中的预留字段是否为0,如果不为0,必须断开该连接。

4. 清理会话标志

  A. 清理会话标志的表现

    a.清理会话标志为0(false)

      i.如果已存在相同Clien

  • 1
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值