首页 > 解决方案 > 为什么 MQTT 和 CoAP 的有效载荷大小不同?

问题描述

我有一个担忧,因为我刚开始在学校使用 MQTT 和 CoAP。我分别使用两种协议进行数据包传输,对于 MQTT,我使用 mosquitto,libcoap 用于 CoAP,传输的数据包包含信息“Temperature=22*C”。我知道两种协议的数据包中标头大小的差异。但我的问题是为什么有效载荷大小不同,即使它包含相同的信息。我知道 TCP 标头大于 UDP 标头。但是对于 MQTT,有效负载是 22 个字节,对于 CoAP,它是 4 个字节。为什么使用相同信息为 CoAP 压缩有效负载?请帮我解答。

标签: iot

解决方案


  1. 正如您所指出的,至少由于 TCP 和 UDP 标头大小的不同,TCP 数据包和 UDP 数据报的大小会有所不同。
  2. MQTT 消息(TCP 打包体)和 CoAP 打包(UDP 数据报体)至少会因为 MQTT 和 CoAP 消息头的不同而有所不同。
  3. MQTT 有效负载和 CoAP 有效负载(省略 MQTT 和 CoAP 标头)可能由于不同的序列化协议而有所不同。字符串可以以不同的格式进行序列化传输:JSON、TLV、CBOR、明文。您需要检查案例中每条消息的用途。

推荐阅读