mqtt协议发布管理

发布管理

发布管理是建链后,进行消息通信的第一步,是由发布客户端往服务端发送一个主题,或者由服务端往客户端发布一个主题。同样的我们将按照发布的正常流程和异常流程,以及发布的控制报文和有效载荷的视角进行解读。

1、发布正常流程

如下图所示以客户端往服务端发送主题为例,注意这个方向可以是反过来的。从图中可以看出服务端在收到发布主题的消息后,会依据报文中的QOS等级进行回复。如果是QOS1等级,即至少发布一次,则会只回复一个发布确认,假设此次交互中失败了,那按照设定的QOS1等级,客户端可以再次发送,直到发送成功,因此上述的一次交互也是合理的。如果是QOS2等级,即只发布一次,则会进行两次的握手,首先会告知客户端发布收到,然后客户端会根据设定的只发布一次的规则,告知服务端发布释放,最后再由服务端通过发布完成告知客户端完成所有流程。与第一种可以多次收发不同,这种方式只能收发一次,因此需要通过多次握手,保证确保主题可以发布成功

在这里插入图片描述

2、发布控制报文

如下图所示是发布的控制报文,与上图一一对应,PUBLISH的可变报文头会包含topic的信息,至于说topic的内容,则在有效载荷中包含,由具体的应用决定。在PUBLISH报文的固定报文头中包含QOS0~2的等级,QOS0是没有回复的,剩下的两个等级有回复,另外如果是重发的PUBLISH报文,DUP的位会被设置为1。其他的回复报文比较简单,如果想了解控制报文的详细格式可以对照参考文献MQTT协议[2]。
在这里插入图片描述

3、发布有效载荷

如下图所示,在发布管理的的5种控制报文中,只有PUBLISH报文有有效载荷,该载荷就是topic主题的内容,该内容是由具体的应用决定,除此以外其他的都没有。
在这里插入图片描述

4、发布异常流程

连接建立以后,在发布主题的时候也是有断链的情况出现的,这个时候需要明确是在发送哪个报文的时候出现断链,如下图所示是在该场景下PUBLISH报文和PUBREL报文异常时出现的断链。可以根据图示的位值进行排查。
在这里插入图片描述

参考文献:https://mcxiaoke.gitbooks.io/mqtt-cn

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值