物联网概念 MQTT 根据 QoS 定义的等级

恒温 · 2018年07月05日 · 最后由 wenxinlsy 回复于 2023年04月14日 · 3220 次阅读

MQTT 根据 QoS 定义的等级来传输消息。等级描述如下:

level 0:最多一次的传输

消息是基于 TCP/IP 网络传输的。没有回应,在协议中也没有定义重传的语义。消息可能到达服务器 1 次,也可能根本不会到达。

level 1:至少一次的传输

服务器接收到消息会被确认,通过传输一个 PUBACK 信息。如果有一个可以辨认的传输失败,无论是通讯连接还是发送设备,还是过了一段时间确认信息没有收到,发送方都会将消息头的 DUP 位置 1,然后再次发送消息。消息最少一次到达服务器。SUBSCRIBE 和 UNSUBSCRIBE 都使用 level 1 的 QoS。

如果客户端没有接收到 PUBACK 信息(无论是应用定义的超时,还是检测到失败然后通讯 session 重启),客户端都会再次发送 PUBLISH 信息,并且将 DUP 位置 1。

当它从客户端接收到重复的数据,服务器重新发送消息给订阅者,并且发送另一个 PUBACK 消息。

level 2: 只有一次的传输

在 QoS level 1 上附加的协议流保证了重复的消息不会传送到接收的应用。这是最高级别的传输,当重复的消息不被允许的情况下使用。这样增加了网络流量,但是它通常是可以接受的,因为消息内容很重要。

QoS level 2 在消息头有 Message ID。

如果觉得我的文章对您有用,请随意打赏。您的支持将鼓励我继续创作!
共收到 2 条回复 时间 点赞

物联网下个时代的产物啊。学习了。

笔记:通俗地讲,MQTT 是种协议,就像口语种不同的语言,物理上不同的接口(类似 USB)协议。MQTT 位于应用层。只要是支持 TCP/IP 协议栈的地方,就可以使用 MQTT。

需要 登录 后方可回复, 如果你还没有账号请点击这里 注册