Protocol Name → Protocol Version → Connect Flags → Keep Alive → Properties(5.0)
Protocol Name / Version
字段
MQTT 5.0
MQTT 3.1.1
Protocol Name
UTF-8 字符串 MQTT
同为 MQTT(3.1 曾为 MQIsdp)
Protocol Version
5
4
Connect Flags(1 字节)
1 2 3 4 5 6
bit7 bit6 bit5 bit4 bit3 bit2 bit1 bit0 ┌────────┬──────────┬───────────┬──────────┬────────────┬─────────────┬─────┐ │UserName│ Password │ Will │ Will QoS │ Will Retain│ Clean Start │ Res │ │ Flag │ Flag │ Flag │ │ │ (Clean Ses.*)│ =0 │ └────────┴──────────┴───────────┴──────────┴────────────┴─────────────┴─────┘ * 3.1.1 中 bit1 名为 Clean Session
位
含义
Clean Start (5.0) / Clean Session (3.1.1)
是否丢弃旧会话并新建
Will Flag
1 则 Payload 含 Will Topic/Payload(5.0 还有 Will Properties)
Will QoS / Will Retain
遗嘱消息的 QoS 与 Retain
User Name / Password Flag
Payload 是否含对应用户字段
Reserved bit0
必须为 0
Keep Alive
Two Byte Integer,单位:秒
表示 Client 在无其它控制报文时发送 PINGREQ 的最长间隔相关约定
Server 若在 1.5 × Keep Alive 内未收到 Client 控制报文,可判定连接断开并处理 Will(规范定义)
CONNECT Properties(仅 5.0,§3.1.2.11)
常见属性:
属性
作用
Session Expiry Interval
断线后会话保留秒数;0xFFFFFFFF 表示永不过期
Receive Maximum
Client 未确认 QoS1/2 上限
Maximum Packet Size
Client 愿接收的最大包
Topic Alias Maximum
Client 支持的主题别名上限
Request Response Information
请求 Server 在 CONNACK 给 Response Information
Request Problem Information
是否希望 Reason String / User Property
User Property
自定义键值
Authentication Method / Data
增强认证
1.3 Payload 顺序(按 Flags 条件出现)
1 2 3 4 5 6
1. Client Identifier (必须) 2. Will Properties (5.0) (Will Flag=1) 3. Will Topic (Will Flag=1) 4. Will Payload (Will Flag=1) 5. User Name (User Name Flag=1) 6. Password (Password Flag=1)