MQTT (Message Queuing Telemetry Transport) 是一种轻量级的、开放的、基于发布/订阅模式的通信协议,最初由IBM开发,用于传感器和嵌入式设备之间的通信。
MQTT 协议通过交换预定义的 MQTT 控制报文来进行通信。这些控制报文定义了客户端和服务器之间的通信行为,包括连接建立、消息发布、订阅主题、取消订阅等操作。
MQTT 控制报文的结构如下:
- 固定报头(Fixed Header):固定报头包含了控制报文类型和一些标志位。其格式如下:
----------------------------------------- | 7 6 5 4 | 3 | 2 | 1 | 0 | ----------------------------------------- | Control Packet Type | Flags | -----------------------------------------
- 控制报文类型字段指示了报文的类型,如连接请求、发布消息、订阅主题等。
- 标志位字段则根据不同类型的报文而有所不同,用于指示特定的行为或属性。
- 可变报头(Variable Header):可变报头的内容和格式取决于控制报文类型。通常包含了一些额外的控制信息,如报文标识符(Packet Identifier)等。
- 有效载荷(Payload):有效载荷包含了实际的数据内容,如发布的消息内容、订阅的主题等。其内容和格式也取决于控制报文类型。
以下是 MQTT 协议中常见的几种控制报文类型:
CONNECT:连接请求报文,客户端用来连接到 MQTT 服务器。
Fixed Header:
0x10 // Control Packet Type: CONNECT