Mqtt、Coap、Http协议相关区别

733 阅读4分钟

Mqtt、Coap、Http协议相关区别

1.协议栈

Mqtt:TCP长连接,Coap:UDP低功耗链接,Http:TCP。

2.请求方式

Mqtt:发布订阅,Coap:Request/Response,Http:Request/Response。

3.通讯消息格式

4.特点

Mqtt是多个客户端通过一个中央代理服务器(Mqtt Broker)传递消息的多对多协议。通过客户端发布消息,Broker决定消息路由和复制来解耦生产者和消费者。Mqtt对数据持久化有一定支持,但他是最好的实时通讯总线。

Coap是一个客户端与服务器之间传递状态信息的点对点协议。

Http是适合在性能好一些的终端上,相对Mqtt来说比较重,对设备要求相对高一些,不适合M2M(端到端)场景开。

5.客户端平台差异

Http和Mqtt客户端都已在大量平台上实现,Mqtt的简单性有助于以极少的经理在额外的客户端上实现Mqtt。

6.防火墙容错

一些企业防火墙将出站连接限制到一些已定义的端口。这些端口通常被限制为 HTTP(80 端口)、HTTPS(443 端口)等。HTTP 显然可以在这些情况下运行。MQTT 可封装在一个 WebSockets 连接中,显示为一个 HTTP 升级请求,从而允许在这些情况下运行。MQ 不允许采用这种模式。

Mqtt协议详解

特性

Mqtt:专业用于物联网场景的数据传输协议。 轻量的发布/订阅的消息传输; 为低带宽和不稳定的网络环境中的物联网设备提供可靠的网络服务。 他的核心设计思想是开源、可靠、轻巧、简单,从而让他具备如下几点特性: 1.非常小的通信开销,对带宽要求低;2.支持各种流行的编程语言的客户端,并且方便安装使用;3.支持发布/订阅模型,简化应用程序的开发。4.提供三种不同消息传递等级,让消息按照业务需要被订阅使用,适应在不稳定的工作网络中传输消息。5.小型传输,开销很小(固定的长度的头部是2字节),协议交换最小化,以降低网络流量,从而降低对设备带宽的要求。6.使用 Last Will 和 Testament 特性通知有关各方客户端异常中断的机制。

三种消息的发布质量

  • Qos 0:"最多一次",消息发布完全依赖底层TCP/IP网络,分发的消息可能丢失或重复。例如,这个等级可用于环境传感器数据,单次的数据丢失没关系,因为不久后还会第二次发送。
  • Qos 1:"至少一次",确保消息可以到达,但消息可能重复。
  • Qos 2:"只有一次",确保消息只到达一次,例如,这个等级可用在一个计费系统中,这里如果消息重复或丢失会导致不正确的收费。

Mqtt数据包组成

固定头(很小 2个bit) + 可变头部 + 消息体三部分组成

对于传统的Http和Mq协议,Mqtt的优势在哪?

协议比较HttpMqMqtt
机密性 
低协议开销
对不稳定网络的容忍
低功耗
数百万个链接的客户支持
推送短信
客户端平台的差异
防火墙容错

低协议开销。这个主要表现在Mqtt他的消息体小,固定头部标题短至2个bit。Mq和Http都拥有高的多的消息开销,对于Http,为每个请求建立http链接会导致重大的开销,因为是无状态的,不可复用的链接,而Mq和Mqtt使用的长链接显著减少了这一开销。

对不稳定网络的容忍。Mqtt和Mq能够从断开等故障中恢复,不用开发人员对其编码处理,但是Http无法原生实现此目的。需要客户端重试编码,这可能引发幂等性问题。

低功耗。 Mqtt专门针对低功耗设备而设计的。

数百万链接的客户端。维护数百万个并发连接,需要做许多的工作来提供支持。尽管可以实现此支持,但大多数商业产品都为处理这一数量级的永久连接而进行了优化。IBM 提供了 IBM MessageSight,这是一个单机架装载服务器,经过测试能处理多达 100 万个通过 MQTT 并发连接的设备。相反,MQ 不是为大量并发客户端而设计的。

推送通知。您需要能够及时地将通知传递给客户。为此,必须采用某种定期轮询或推送方法;从电池、系统负载和带宽角度讲,推送是最佳解决方案。