MQTT 在 TCP/IP 上传输时如何轻量级

How MQTT is lightweight when it transports over TCP/IP

在大多数物联网平台中,MQTT 被用作 M2M 通信,这是轻量级的原因之一。

设备 ---N/W--> MQTT 代理 ---> 另一个设备

设备通过 TCP/IP 与 MQTT Broker 通信,这意味着将有一个负载添加作为 TCP/IP 层的一部分。

这是我困惑的开始: MQTT跑完了TCP/IP,怎么就成了轻量级协议了?

您将 MQTT 与什么进行比较?

你的问题是将 MQTT 与它用作基础传输的底层 TCP/IP 进行比较的起始前提。

由于 MQTT 在 TCP/IP 之上运行,因此它不是有效的比较,请尝试将其与也在 TCP/IP.

设置一个 MQTT 连接然后订阅一个主题在几个字节 + 主题名称中处理,并且连接是持久的。当消息再次发送时,它有几个字节的头部 + 主题和有效负载。

通过比较 HTTP 请求以 URL + 一堆请求 headers 开始,响应包括一大堆更多的响应 headers(很容易有 100 字节headers,因为它都被编码为文本)在我们到达有效载荷之前,通常连接在有效载荷之后关闭。

如果添加 TLS/SSL 为每个负载 HTTP 启动新连接的开销会变得更糟。