MQTT5协议报文格式

本文详细介绍了MQTT协议的控制报文结构,包括固定头、可变头和有效载荷三个部分。固定头包含了报文类型、标志位和剩余长度,其中报文类型定义了15种不同的控制报文,如CONNECT、PUBLISH、SUBSCRIBE等,标志位如DUP、QoS和RETAIN用于服务质量控制。可变头则根据报文类型包含不同信息,如包标识符。有效载荷则根据报文类型可选,如PUBLISH报文中的应用程序消息。


1 概述

MQTT(Message Queuing Telemetry Transport,消息队列遥测传输协议),是一种基于发布/订阅(publish/subscribe)模式的"轻量级"通讯协议,该协议构建于TCP/IP协议上,由IBM在1999年发布。MQTT最大优点在于,可以以极少的代码和有限的带宽,为连接远程设备提供实时可靠的消息服务。作为一种低开销、低带宽占用的即时通讯协议,使其在物联网、小型设备、移动应用等方面有较广泛的应用。

MQTT是一个基于客户端-服务器的消息发布/订阅传输协议。MQTT协议是轻量、简单、开放和易于实现的,这些特点使它适用范围非常广泛。在很多情况下,包括受限的环境中,如:机器与机器(M2M)通信和物联网(IoT)。其在,通过卫星链路通信传感器、偶尔拨号的医疗设备、智能家居、及一些小型化设备中已广泛使用。

注:由于业务用上了MQTT作为设备通讯协议内容,此篇文章为总结几篇mqtt报文解析的好文再加上mqtt官方文档出的,故此为整理备忘文。


2 控制报文格式


MQTT控制报文由三部分组成:固定头(Fixed header)+可变头(Variable header)+有效载荷(Payload) 

Fixed header 固定头部,MQTT协议分很多种类型,如连接,发布,订阅,心跳等。其中固定头是必须的,所有类型的MQTT协议中,都必须包含固定头
Variable header 可变头部,可变头部不是可选的意思,而是指这部分在有些协议类型中存在,在有些协议中不存在
Payload 消息载体,就是消息内容。与可变头一样,在有些协议类型中有消息内容,有些协议类型中没有消息内容

2.2 固定报头(Fixed header)

Bit

7

6

5

4

3

2

1

0

byte 1

MQTT Control Packet type

MQTT控制报文类型

Flags specific to each MQTT Control Packet type

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

byte 2…

Remaining Length 剩余长度

2.2.1 MQTT控制报文类型(MQTT Control Packet type)

        第一个字节的7-4位,一共4位,可表示16个数字,除0 禁止使用以外,剩余15个数字各表示一个控制报文类型,如图所示:

Name

名称

Value

Direction of flow

报文流动方向        

Description

描述

Reserved

0

禁止

Reserved (预留)

CONNECT

1

客户端到服务器

Client request to connect to Server

客户端连接到服务器

CONNACK

2

Server to Client

Connect acknowledgment

连接确认

PUBLISH

3

Client to Server

          or

Server to Client

Publish message

发布消息

PUBACK

4

Client to Server

          or

Server to Client

Publish acknowledgment

发布确认(QoS 1)

P

评论 5
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值