概述
前言
为了更深入了解MQTT协议,本文结合官方MQTT协议介绍展开介绍,记录学习过程。
官方文档地址:http://public.dhe.ibm.com/software/dw/webservices/ws-mqtt/mqtt-v3r1.html#fixed-header
1.协议介绍
以下截图为官方介绍,以及V3与V3.1版本区别。
2. 报文格式
每一帧报文都包含固定头,有些报文除了固定头,还包括可变头和消息体。
2.1 固定头
固定头包含2个字节数据,第一个字节的4-7位定义消息类型,第3位定义DUP 标志,1-2位定义QOS级别,0位定义RETAIN标志。第二字节定义剩余长度。
消息类型定义:
DUP
其是用来在保证消息传输可靠的,QOS大于0时需要设置为1,并需要回复确认,则在下面的变长头部里多加MessageId,保证消息传输完成,但不能用于检测消息重复发送。
QOS
主要用在发布消息时,保证消息传=传输质量。
RETAIN
此标志仅用于 PUBLISH 消息。当客户机向服务器发送 PUBLISH 时,如果设置了 Retain 标志(1) ,那么服务器应该在将消息传递给当前订阅者之后保留该消息。
Remaining Length
表示当前消息中剩余的字节数,包括变量头和有效负载中的数据。
2.2 可变头
某些类型的 MQTT 命令消息还包含一个变量头组件。它位于固定的头部和有效负载之间。
Protocol name
协议名出现在 mqttconnect 消息的变量头中。该字段是一个 utf 编码的字符串,表示协议名 MQIsdp。
Protocol version
协议版本号,v3 也是固定的。
Connect flags
Clean session、 Will、 Will QoS 和 Retain 标志出现在 CONNECT 消息的变量头中。
Keep Alive timer
表示响应时间,如果这个时间内,连接或发送操作未完成,则断开tcp连接,表示离线。
Connect return code
连接返回代码在 CONNACK 消息的变量头中发送。此字段定义一个单字节无符号返回代码。如下表所示,这些值的含义特定于消息类型。返回码为0通常表示成功。
Topic name
订阅消息标识,MQTT是基于订阅/发布的消息,那么这个就是消息订阅的标识,像新闻客户端里的订阅不同的栏目一样。用于区别消息的推送类别。
2.3 消息体
只有3种消息有消息体CONNECT,SUBSCRIBE,SUBACK。
2.4 消息标识符
消息标识符出现在下列 MQTT 消息的变量头中: PUBLISH,PUBACK,PUBREC,PUBREL,PUBCOMP,SUBSCRIBE,SUBACK,UNSUBSCRIBE,UNSUBACK。
最后
以上就是沉默故事为你收集整理的MQTT协议学习心得1.协议介绍2. 报文格式 的全部内容,希望文章能够帮你解决MQTT协议学习心得1.协议介绍2. 报文格式 所遇到的程序开发问题。
如果觉得靠谱客网站的内容还不错,欢迎将靠谱客网站推荐给程序员好友。
发表评论 取消回复