【问题标题】:Why MQTT sends more packets than TCP?为什么 MQTT 发送的数据包比 TCP 多?
【发布时间】:2016-12-21 19:17:01
【问题描述】:

我已经从一台服务器运行了一些流量到另一台服务器。在第一种情况下,数据包是通过 TCP 协议发送的。在另一种情况下,数据包是通过 MQTT 协议(也通过 TCP 运行)发送的。通过MQTT交换场景,server1发送到server2的数据包是我使用TCP时从server1发送到server2的数据包的3倍。

【问题讨论】:

  • 您的问题与物联网有何关系?并非所有涉及网络、连接或服务器的东西都与物联网有关。我没有看到任何关系。如果没有更多内容,请删除 IoT 标签。
  • 另外,由于您承认此 mqtt 实现通过 tcp 运行,我希望发送的数据包数量至少与使用直接 tcp 的通信相同或更高。为什么是3倍?我不知道。也许这只是额外包装的大小,或者可能是一些订阅/取消订阅消息。谁知道。这是您的应用程序,您没有说明它如何运行或通过网络发送什么。你甚至没有说你的应用程序中网络背后的概念或方案是什么。我们如何猜测?与此同时,也许只是抓住 Wireshark 自己看看?
  • 您需要提供更多信息才能获得正确答案。有效载荷有多大,您使用了什么 QOS,您发布的主题是什么,您将 keepalive 值设置为什么?
  • @quetzalcoatl MQTT 被认为是物联网协议,因此它是一个合理的标签
  • MQTT 在连接时有自己的握手 - 您是否计算了这些,或者您只计算了带有用户有效负载的 MQTT 消息?您的 MQTT 库是否禁用 Nagle 算法以更快地传递数据,可能以发送更多 TCP 段为代价?您在 TCP 之上运行的自定义协议是否像 MQTT 那样发送应用程序数据的应用程序确认?

标签: mqtt iot


【解决方案1】:

这取决于更高级别的协议(高于 TCP)。 MQTT 协议为 QOS 1 发送 PUBACK,因此仅发送有效负载就会使数据包数量增加一倍。 你的协议是秘密的,所以我们不能评论它。 Wireshark PCAP 可让您诊断不平衡。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2017-02-26
    • 2018-08-13
    • 2019-07-15
    • 1970-01-01
    • 2013-08-23
    • 1970-01-01
    相关资源
    最近更新 更多