【发布时间】:2019-05-24 21:35:14
【问题描述】:
MQTT 是基于 TCP 的协议,而 TCP 是一种可靠的传输协议。
既然 TCP 是可靠的,那么为什么 MQTT 中有一个级别 0 的 QoS 表示从发布者到接收者的消息可能会丢失?
或者更多,既然 TCP 天生就支持可靠传输,那为什么 MQTT 需要一个 QoS 的概念呢?
【问题讨论】:
MQTT 是基于 TCP 的协议,而 TCP 是一种可靠的传输协议。
既然 TCP 是可靠的,那么为什么 MQTT 中有一个级别 0 的 QoS 表示从发布者到接收者的消息可能会丢失?
或者更多,既然 TCP 天生就支持可靠传输,那为什么 MQTT 需要一个 QoS 的概念呢?
【问题讨论】:
假设您已将 MQTT 消息写入 TCP 链接,但在收到另一端的确认之前 TCP 链接出错。另一端可能收到也可能没有收到 MQTT 消息。 MQTT 实现必须决定是尝试通过另一个链接还是在重新建立 TCP 链接之后尝试发送消息。为此,它需要知道该消息是否是必不可少的,无论它延迟了多少,或者是否没有必要重新发送它,因为如果没有及时收到它就会过时。
【讨论】: