MQTT和CoAP对比

1、MQTT和CoAP协议通信流程图
1.1 MQTT和CoAP协议通信流程图示
在这里插入图片描述
1.2 MQTT和CoAP协议业务对比图示
在这里插入图片描述
2. 什么是MQTT?
MQTT(Message Queuing Telemetry Transport),为IBM和Eurotech共同制定出来的protocol。
MQTT是一种机器到机器(M2M)/“物联网”连接协议。它被设计为一个非常轻量级的发布/订阅消息传输。
简单来说,它是为了物联网而设计的protocol,并且它是透过publish/subscribe的方式来做讯息传送。由于是为了物联网而设计的协定,因此它所需要的网路频宽是很低的,而所需要的硬体资源也是低的。

3、什么是CoAP?
CoAP(The Constrained Application Protocol) 目前已是IETF标准(RFC 7252) ,提出一个类似HTTP/TCP设计,但是属于轻量版的HTTP/UDP,使得其有利于感测节点进行网路传输。
3.1 主要特点:
3.1.1 CoAP是主从(Client/Server)架构,感测节点多半为CoAP Server提供资源,由CoAP Client请求读取/控制资源状态。CoAP使用UDP (port: 5683),对于资料是否要重传或传送顺序(Reordering)全交由上层应用层来决定,对于资源有限的MCU则不需要有完整TCP/IP协定实作
3.1.2 而CoAP同HTTP一样具有REST(Representational State Transfer)设计风格,也支援GET/PUT/POST/DELETE及URIs的请求方式
3.1.3 CoAP采用二进位整数格式且封包标头4个byte而非HTTP使用字串格式(ASCII code),所以封包传送时的额外负担小且不必像HTTP一样得进行耗时的字串解析处理。
3.1.4 CoAP QoS : CoAP讯息分为Confirmable或Non-Confirmable。Confirmable要求接收端须回送ACK,若没有收到ACK则重送一次。若送的是Non-Confirmable讯息,则送出端不在乎接收端是否收到。
3.1.5 CoAP加密使用DTLS (Datagram Transport Layer Security)
3.1.6 通知机制: CoAP扩展了HTTP GET,加入了一个observe flag,使得CoAP Server能主动回传,CoAP Client所observe的资源状态。
3.1.7 NAT Issue:若感测节点在NAT后方,则必须一开始先送出请求到外部,使路由器可以接受来自外面CoAP Client的请求,例如请求资源清单。

4、 CoAP vs MQTT 比较
4.1 HTTP、CoAP 、MQTT 比较图
在这里插入图片描述

4.2 MQTT协议业务特点
4.2.1 功耗更多
基于TCP实现,需要保持长连接,定期发送心跳包,会更加耗电
1次2B 收发共2次,一分钟一次 ,4 * 60 * 24 * 30= 172K如果网络不稳定的情况,重新连接的过程会更耗电
4.2.2 适用于实时控制的场景
多用于基于安全传输
4.2.3 业务模型:多个客户端通过一个中央代理传递消息的多对多协议
常见案例模型:微信
4.3 CoAP协议业务特点
4.3.1 功耗更少
CoAP更适合数据采集的场合,更适合纯粹的传感器设备,特别是电池供电的传感器设备。基于UDP传输,无需保持长连接,对设备要求简单。
4.3.2 适用于 数据采集的场景
4.3.3 业务模型:点对点,服务器对设备

发布了146 篇原创文章 · 获赞 28 · 访问量 5万+

猜你喜欢

转载自blog.csdn.net/weixin_38498942/article/details/104430192
今日推荐