MQTT 运行超过 TCP/IP

MQTT runs over TCP/IP

据说MQTT通常运行超过TCP/IP。找了下图,一头雾水

我知道TCP/IP是一套通讯协议,但不仅仅指'TCP'和“IP”这两个协议。 那么MQTT'run over'TCP/IP是什么意思呢?我能说TCP的三次握手、重传、检错让MQTT的有序无损连接吗?

图有误,网上蓝色的TCP应该是IP

要回答您的问题,请阅读 MQTT Specification,例如来自 MQTT 3.1.1 规范,摘要第二段

The protocol runs over TCP/IP, or over other network protocols that provide ordered, lossless, bi-directional connections.

Then what is the meaning of MQTT 'run over' TCP/IP?

你的post中的table实际上是OSI-model的介绍。在该模型中有协议层,其中一层的协议依赖于来自下面层的协议。因此 MQTT(第 7 层)依赖于('run over')TCP/IP 堆栈(第 6 层及以下)。

can I interpret that the 'other network protocols that provide ordered, lossless, bi-directional connections' which MQTT runs over are the protocols not included in TCP/IP models?

是的。例如 Zigbee。

can I say that the three-way handshake , retransmission, and error-detection of TCP allows ordered, lossless connections of MQTT?

嗯,“有序、无损连接”可能不仅由 TCP 的特性保证,而且由属于 MQTT 协议本身的机制保证。