tcp - 既然 MQTT 基于 TCP,那为什么 MQTT 需要 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/

相关文章:

java - 代码中的多播地址未在 DDS 代码中设置

c# - 不活动后出现故障的 WCF 双工回调 - 使长时间运行的推送通知保持事件状态

Java网络对象序列化

python - 如何对挂起的 Paho Python Mqtt Single Publish 进行故障排除

javascript - 将 MQTTNet 服务器与 MQTT.js 客户端结合使用

c - MQTT 连接特定接口(interface),如 eth0/wlan0

python服务器程序cpu使用率高

java - 什么是 TCP 窗口更新?

tcp - MQTT QoS 的用途/目的是什么?