当前位置: 首页>前端>正文

mqtt连接状态监控 mqtt控制端

MQTT控制包格式

本文主要介绍控制包的组成框架和格式,而每种控制包的细节内容将在后文学习

总体结构

MQTT协议通过以定义的方式交换一系列MQTT控制包来工作
至多有三个部分,至少有一个部分,它们的相对顺序固定

英文名称

中文名称

介绍

Fixed header

固定报头

所有数据包

Variable header

可变报头

部分数据包

Payload

有效负载

部分数据包

1. 固定报头

格式

mqtt连接状态监控 mqtt控制端,mqtt连接状态监控 mqtt控制端_客户端,第1张

  • 控制包类型
    位于byte1的bit[4:7]

Name

Vaule

Direction of flow

Description

Reserved

0

禁用

保留

CONNECT

1

C2S1

客户端请求连接

CONNACK

2

S2C2

服务器连接应答

PUBLISH

3

C2S/S2C

发布消息

PUCACK

4

C2S/S2C

发布应答

PUBREC

5

C2S/S2C

发布接受(保证交付的第一部分)

PUBREL

6

C2S/S2C

发布(保证交付的第二部分)

PUBCOMP

7

C2S/S2C

发布完成(保证交付的第三部分)

SUBSCRIBE

8

C2S

客户端请求订阅

SUBACK

9

S2C

服务器订阅应答

UNSUBSCRIBE

10

C2S

客户端请求取消订阅

UNSUBACK

11

S2C

服务器取消订阅应答

PINGREQ

12

C2S

客户端请求PING

PINGRESP

13

S2C

服务器回应PING

DISCONNECT

14

C2S

客户端请求断开连接

Reserverd

15

禁用

保留

  • 标志位
    位于byte1的bit[3:0]
    每个控制包类型对应的标志位必须如下表所示,否则接收方必须关闭网络连接

控制包

可变头标志

Bit 3

Bit 2

Bit 1

Bit 0

CONNECT

保留

0

0

0

0

CONNACK

保留

0

0

0

0

PUBLISH

在3.1.1中使用

DUP3

QoS4

QoS4

RETAIN5

PUCACK

保留

0

0

0

0

PUBREC

保留

0

0

0

0

PUBREL

保留

0

0

1

0

PUBCOMP

保留

0

0

0

0

SUBSCRIBE

保留

0

0

1

0

SUBACK

保留

0

0

0

0

UNSUBSCRIBE

保留

0

0

1

0

UNSUBACK

保留

0

0

0

0

PINGREQ

保留

0

0

0

0

PINGRESP

保留

0

0

0

0

DISCONNECT

保留

0

0

0

0

  • 剩余长度
    剩余长度=可变报头长度+有效载荷长度(单位为Byte)
    采用变长编码
  • 字节长度可变,每一个字节代表一个数位(Digits),第n个数位的权值为128^n(相当于128进制数)
  • 单个字节的bit[6:0]表示值,取值范围0~127,bit 7用来指示是否还有更高数位

Digits

From

To

1

0(0x00)

127(0x7F)

2

128=0x1+1x128(0x80,0x01)

16383=127x1+127x128(0xFF,0x7F)

3

16384=(0x1)+(0x128)+(1x128^2) (0x80, 0x80, 0x01)

2097151=(127x1)+(127x128)+(127x128^2) (0xFF, 0xFF, 0x7F)




2. 可变报头

部分控制包需要2 byte的控制包标识符(Packet Identifier)作为可变报头

控制包

标识符

CONNECT


CONNACK


PUBLISH

(QoS>0时)有

PUCACK


PUBREC


PUBREL


PUBCOMP


SUBSCRIBE


SUBACK


UNSUBSCRIBE


UNSUBACK


PINGREQ


PINGRESP


DISCONNECT


3. 有效载荷

一些控制包的最后一个部分是有效载荷如下表
对于PUBLISH控制包,有效载荷就是应用消息

控制包

有效载荷

CONNECT

需要

CONNACK


PUBLISH

可选

PUCACK


PUBREC


PUBREL


PUBCOMP


SUBSCRIBE

需要

SUBACK

需要

UNSUBSCRIBE

需要

UNSUBACK


PINGREQ


PINGRESP


DISCONNECT



  1. Client to Server ↩︎
  2. Server to Client ↩︎
  3. Duplicate delivery of a PUBLISH Control Packet
    重复交付发布控制包 ↩︎
  4. PUBLISH Quality of Service
    发布服务质量 ↩︎ ↩︎
  5. PUBLISH Retain flag
    发布保持标志 ↩︎



https://www.xamrdz.com/web/2yd1964365.html

相关文章: