<分区>
MQTT是基于TCP的协议(protocol),TCP是可靠的传输协议(protocol)。
既然 TCP 是可靠的,那么为什么 MQTT 中有一个 0 级 QoS 表示从发布者到接收者的消息可能会丢失?
或者说,既然TCP天生就支持可靠传输,那为什么MQTT还需要QoS的概念呢?
<分区>
MQTT是基于TCP的协议(protocol),TCP是可靠的传输协议(protocol)。
既然 TCP 是可靠的,那么为什么 MQTT 中有一个 0 级 QoS 表示从发布者到接收者的消息可能会丢失?
或者说,既然TCP天生就支持可靠传输,那为什么MQTT还需要QoS的概念呢?
最佳答案
假设您已将 MQTT 消息写入 TCP 链接,但 TCP 链接在您收到另一端的确认之前出错。另一端可能收到也可能没有收到 MQTT 消息。 MQTT 实现必须决定是尝试通过另一个链接发送消息,还是在重新建立 TCP 链接后尝试发送消息。为此,它需要知道消息是否必不可少,无论它被延迟了多少,或者重新发送它是否没有意义,因为如果没有及时收到它就已经过时了。
关于tcp - 既然 MQTT 基于 TCP,那为什么 MQTT 需要 QoS?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/53935158/