MQTT和CoAP区别

CoAP 是 受限制的应用协议(Constrained Application Protocol)的代名词。
最近几年专家们预测会有更多的设备相互连接,而这些设备的数量将远超人类的数量。在这种大背景下,物联网和M2M技术应运而生。
虽然对人们而言,连接入互联网显得方便容易,但是对于那些 微型设备 而言接入互联网非常困难。在当前由PC机组成的世界,信息交换是通过TCP和应用层协议HTTP实现的。但是对于小型设备而言,实现TCP和HTTP协议显然是一个过分的要求。为了让小设备可以接入互联网,CoAP协议被设计出来。
CoAP是一种应用层协议,它运行于UDP协议之上而不是像HTTP那样运行于TCP之上。
CoAP协议非常小巧,最小的数据包仅为4字节。

CoAP协议有哪些特点?

   1.满足资源受限的网络需求。
   2.无状态HTTP映射,可以通过HTTP代理实现访问CoAP资源,或者在CoAP智商构建HTTP接口。
   3.使用UDP实现可靠IP单播和最大努力IP多播。
   4.异步消息交换
   5.很小的消息头载荷及解析复杂度。
   6.支持URI和内容类型(Content-type).
   7.支持代理和缓存.
   8.内建资源发现.
   9.可以使用DTLS作为安全加密层。
   10.资源消耗低,所需RAM和ROM资源均小于10KB。
   11.其双层(事务层,请求/响应层)处理方式可支持异步通信.
   12.支持观察模式。
   13.支持块传输

MQTT和CoAP都是非常有用的物联网协议,但两者有根本区别,两个协议各有特点。

  1. MQTT 是多个客户端通过一个中央代理传递消息的多对多协议。它通过让客户端发布消息、代理决定消息路由和复制来解耦生产者和消费者。虽然MQTT持久性有一些支持,但它是最好的实时通讯总线。
  2. CoAP 基本上是一个在Client和Server之间传递状态信息的单对单协议。虽然它支持观察资源,但是CoAP最适合状态转移模型,而不是单纯的基于事件。
  3. MQTT: Clients与Broker之间保持TCP长连接,这个在NAT环境中也不会有问题。
  4. CoAP: Clients与Server都要接收和发送UDP包。在NAT环境下使用CoAP,需要使用“隧道掘进”或者端口转发(内网穿透),否则像LWM2M(轻量级M2M)一样,首先初始化设备到‘头端’( head-end )的连接.
  5. MQTT不支持带有类型或者其它帮助Clients理解的标签消息。MQTT消息可用于任意目的,但前提是所有的Clients必须知道消息格式。
    而CoAP则相反,它内置内容协商和发现支持,这样允许设备彼此窥测以找到交换数据的方式。

https://segmentfault.com/a/1190000011516219

http://www.xue63.com/toutiaojy/20180112G0RSMB00.html

猜你喜欢

转载自blog.csdn.net/hola_ya/article/details/81177820
今日推荐