理论【1】mqtt 协议

1、介绍理论

1.1、官方协议介绍 链接

2、重要词汇介绍

1.1 客户端 Client

使用MQTT的程序或设备(手机、嵌入式设备)。客户端总是通过网络连接到服务端。它可以

  1. 发布应用消息给其它相关的客户端。
  2. 订阅以请求接受相关的应用消息。
  3. 取消订阅以移除接受应用消息的请求。
1.2 服务端 Server

一个程序或设备,作为发送消息的客户端和请求订阅的客户端之间的中介。服务端

  1. 接受来自客户端的网络连接。
  2. 接受客户端发布的应用消息。
  3. 处理客户端的订阅和取消订阅请求。
  4. 转发应用消息给符合条件的已订阅客户端。
1.3 发布 publish

设备向服务器发布主题,包括Qos,用户数据

1.4 订阅 Subscription

订阅包含一个主题过滤器(Topic Filter)和一个最大的服务质量(QoS)等级。订阅与单个会
话(Session)关联。设备向服务器订阅主题

1.5 主题名 Topic Name

附加在应用消息上的一个标签,服务端已知且与订阅匹配。服务端发送应用消息的一个副本
给每一个匹配的客户端订阅。

1.6 主题过滤器 Topic Filter

订阅中包含的一个表达式,用于表示相关的一个或多个主题。主题过滤器可以使用通配符。

1.7 会话 Session

客户端和服务端之间的状态交互。一些会话持续时长与网络连接一样,另一些可以在客户端
和服务端的多个连续网络连接间扩展。

1.8 控制报文 MQTT Control Packet

通过网络连接发送的信息数据包。MQTT规范定义了十四种不同类型的控制报文,其中一个
(PUBLISH报文)用于传输应用消息

3 MQTT控制报文格式

mqtt数据主要根据控制报文的类型进行区别到底是哪类的数据,然进行控制和接收

3.1控制报文

在这里插入图片描述

3.2 控制报文的报头

每个MQTT控制报文都包含一个固定报头
在这里插入图片描述

3.3控制报文的类型

在这里插入图片描述

3.4 指定控制报文的类型标志位

在这里插入图片描述
在这里插入图片描述

3.4.1 DUP 重发

当客户端或服务器尝试重新传递PUBLISH,PUBREL,SUBSCRIBE或UNSUBSCRIBE消息时,将设置此标志。 这适用于QoS值大于零(0)且需要确认的消息。 当DUP位置1时,变量头包括消息ID。

3.4.2 QoS 质量

在这里插入图片描述

3.4.3 连接保活心跳机制(Keep Alive Timer)

MQTT客户端可以设置一个心跳间隔时间(Keep Alive Timer),表示在每个心跳间隔时间内发送一条消息。如果在这个时间周期内,没有业务数据相关的消息,客户端会发一个PINGREQ消息,相应的,服务器会返回一个PINGRESP消息进行确认。如果服务器在一个半(1.5)心跳间隔时间周期内没有收到来自客户端的消息,就会断开与客户端的连接。心跳间隔时间最大值大约可以设置为18个小时,0值意味着客户端不断开。

3.4.5 遗愿标志(Will Flag)

在可变报文头的连接标志位字段(Connect Flags)里有三个Will标志位:Will Flag、Will QoS和Will Retain Flag,这些Will字段用于监控客户端与服务器之间的连接状况。如果设置了Will Flag,就必须设置Will QoS和Will Retain标志位,消息主体中也必须有Will Topic和Will Message字段。

那遗愿消息是怎么回事呢?服务器与客户端通信时,当遇到异常或客户端心跳超时的情况,MQTT服务器会替客户端发布一个Will消息。当然如果服务器收到来自客户端的DISCONNECT消息,则不会触发Will消息的发送。
因此,Will字段可以应用于设备掉线后需要通知用户的场景。

3.5 剩余长度

位置:从第2个字节开始。
剩余长度(Remaining Length): 当前报文剩余部分的字节数,包括可变报头和负载的数
据。剩余长度不包括用于编码剩余长度字段本身的字节数。
剩余长度字段使用一个变长度编码方案,对小于128的值它使用单字节编码。更大的值按下面
的方式处理。低7位有效位用于编码数据,最高有效位用于指示是否有更多的字节。因此每个
字节可以编码128个数值和一个延续位(continuation bit)。剩余长度字段最大4个字节

4 运用

只是一种基于TCP层之上的封住的一层协议,
在这里插入图片描述
应用图解
在这里插入图片描述

可以加入QQ群:687360507
与大伙沟通交流,技术在于分享而进步

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值