MQTT协议详解及开发教程(六)PUBLISH发布QoS0消息报文分析

推荐一款稳定的基于C编写的MQTT Client开源库 cMQTT
MQTT协议详解及开发教程(一)MQTT协议概述
MQTT协议详解及开发教程(二)MQTT服务器EMQx搭建
MQTT协议详解及开发教程(三)MQTT Client工具软件选择及简单测试
MQTT协议详解及开发教程(四)MQTT协议报文格式
MQTT协议详解及开发教程(五)CONNECT/CONNACK报文分析

前言

在上一篇文章中,我们对CONNECT和CONNECT的报文进行了分析,本文接着介绍PUBLISH发布QoS0消息报文,该报文也是我们在开发中经常使用的报文。

1.PUBLISH发布QoS0报文示例

发布QoS0消息示例

1.1 抓包数据

抓包
数据源码如下:

30 15 00 09 54 65 73 74 54 6f 70 69 63 30 31 32  
33 34 35 36 37 38 39                        

1.2 固定报头

30 15
其中:
30 – 对应的控制报文类型为PUBLISH,重发标志DUP位0,QoS等级为0,
RETAIN标志位0
15 – 剩余长度0x15 = 21个字节

1.3 可变报头

00 09 54 65 73 74 54 6f 70 69 63
其中:
00 09 – 这里就是Topic Name的长度,共9个字节
54 65 73 74 54 6f 70 69 63 – Topic Name对应的ASCII码:TestTopic

1.4 有效载荷

30 31 32 33 34 35 36 37 38 39
其中,这里没有载荷的长度
00 09 – 这里就是Topic Name的长度,共9个字节
30 31 32 33 34 35 36 37 38 39 --对应的ASCII码:0123456789

2.发布QoS 0消息的响应报文示例

MQTT协议中规定,PUBLISH报文的接收者必须按照根据PUBLISH报文中的QoS等级发送响应,下表描述了预期的响应规定

服务质量等级预期响应
QoS 0无响应
QoS 1PUBACK报文
QoS 1PUBREC报文

注意:对于QoS 0类型的消息响应,协议规定可以无响应,但是并不是强制的,一般服务器接收到QoS 0类型的消息,都会按照原样返回,这对于Client其实是不影响的,因为客户端发送的Topic,一般都不会自己订阅,所以接收到没有订阅的Topic消息,不动作即可。

2.1 QoS 0 消息响应报文抓包

接收QoS 0响应抓包
可以看到,接收到的响应与发送的是完全一致的,这里就不再赘述。

已标记关键词 清除标记
#### **专栏亮点** - MQTT 协议实例全解析 - MQTT 协议的最佳实践和反模式 - MQTT 协议的安全性实践 - AI+IoT 项目实战 本专栏深入浅出地介绍了 MQTT 协议的各种特性,对每个协议特性都辅以具体代码进行讲解,并通过一个 IoT+AI 项目实战来具体展现 MQTT 在移动端、Web 端的使用,MQTT Broker 的架设等场景。 #### **作者介绍** 付强,十余年从业经验,从 C 语言到 Web 开发,从微服务架构到移动端开发,涉猎范围很广。曾就职于趋势科技、诺基亚,在德国和硅谷的 Startups 工作过,现在从事物联网方向的创业。 #### **适宜人群** - 对物联网平台入门感兴趣的开发人员 - 有一定经验的 IM 平台、移动推送平台开发人员 - 渴望学习更多物联网实际开发经验的人员 - #### **购买须知** - 本专栏为图内容,共计 14 篇。 - 付费用户可享受章永久阅读权限。 - 本专栏为虚拟产品,一经付费概不退款,敬请谅解。 - 本专栏也可在 [gitbook.cn](https://gitbook.cn/) 上购买和阅读。 #### **订阅福利** - 订购本专栏可获得专属海报(在 GitChat 服务号领取),分享专属海报每成功邀请一位好友购买,即可获得 25% 的返现奖励,多邀多得,上不封顶,立即提现。 - 提现流程:请在 GitChat 服务号中点击“我—我的邀请奖励”进行提现。![](https://images.gitbook.cn//mubankoilingpng.png) - <font color=#ff700a>购买本专栏后,服务号会自动弹出入群二维码和暗号。如果你没有收到那就先关注微信服务号「GitChat」,或者加我们图上的小助手微信进行咨询。(入群方式可查看[第 3 篇](https://gitbook.cn/gitchat/column/5be4f4df2c33167c317beb8c/topic/5be4f8422c33167c317bec07)末说明)。</font>
©️2020 CSDN 皮肤主题: 精致技术 设计师:CSDN官方博客 返回首页