目录
前言
内容
CoAP(Constrained Application Protocol 受限应用协议)
MQTT(Message Queuing Telemetry Transport 消息队列遥测传输)
哪种协议?从应用场景要求的层面分析如何选用
1、服务端主动发送给客户端的数据(反控)的时效性(如通过 APP 控制硬件动作)
2、设备环境对底层协议的要求或限制
3、在 NAT 网络环境中是否需要调整
4、实现多对多的通信还是单对单通信
5、服务质量等级及自动重连重发
6、对网络稳定性要求
7、对硬件设备的功耗影响
前言
物联网是在互联网的基础上延伸和扩展的一种网络,其用户端延伸和扩展到了任何物品之间,彼此进行信息交换和通信,目的是实现所有物品与网络的连接,从而方便识别、管理和控制。
无线物联网的特点包括:全面感知、实时准确传递物品信息、利用智能计算技术对海量数据进行分析和处理,以实现智能化控制。
由于物联网中的很多设备都是资源受限型的,即只有少量的内存空间和有限的计算能力,所以传统的 HTTP 协议应用在物联网上就显得过于庞大而不适用。
MQTT 协议和 CoAP 协议都是物联网中比较流行的协议,都对传输量做了很大的精简,传输开销小,以适应物理网的网络环境。
内容
CoAP(Constrained Application Protocol 受限应用协议)
CoAP 是 6LowPAN 协议栈中的应用层协议。COAP 协议网络传输层由 TCP 改为 UDP。
COAP 是二进制格式的,HTTP 是文本格式的,COAP 比 HTTP 更加紧凑。
轻量化,COAP 最小长度仅仅 4B,一个 HTTP 的头都几十个 B 了。
支持可靠传输,数据重传,块传输。 确保数据可靠到达。
支持 IP 多播,即可以同时向多个设备发送请求。
非长连接通信,适用于低功耗物联网场景。
MQTT(Message Queuing Telemetry Transport 消息队列遥测传输)
为硬件性能低下的远程设备以及网络状况糟糕的情况下而设计的发布 / 订阅型消息协议。轻量、简单、开放和易于实现。
1. 使用发布 / 订阅消息模式,提供一对多的消息发布,解除应用程序耦合
2. 使用 TCP/IP 提供网络连接
3. 小型传输,开销很小(固定长度的头部是 2 字节),协议交换最小化,以降低网络流量
这些特点使它适用于受限环境。例如,但不仅限于此:
・特别适合于网络代价昂贵,带宽低、不可靠的环境
・能在处理器和内存资源有限的嵌入式设备中运行
・使用发布 / 订阅消息模式,提供一对多的消息发布,从而解除应用程序耦合
・使用 TCP/IP 提供网络连接
・提供 Last Will 和 Testament 特性通知有关各方客户端异常中断的机制
哪种协议?从应用场景要求的层面分析如何选用
1、服务端主动发送给客户端的数据(反控)的时效性(如通过 APP 控制硬件动作)
因 MQTT 协议是保持连接的,所以及时性相对很好;CoAP 协议是无连接响应式通讯,因此不能主动推送,要等客户端访问才可以携带回去,及时性相对较差。
2、设备环境对底层协议的要求或限制
MQTT 协议是建立在 TCP 协议基础之上的,因此他也具备 TCP 协议的优缺点;CoAP 协议是建立在 UDP 协议基础之上的,因此他也具备 UDP 协议的优缺点。
3、在 NAT 网络环境中是否需要调整
因 MQTT 协议是保持长连接的,所以在 NAT(Network Address Translation,网络地址转换)下没有问题;CoAP 协议因是无连接方式,需要使用 NAT 穿透性手段。
NAT NAT(Network Address Translation,网络地址转换)是 1994 年提出的。当在专用网内部的一些主机本来已经分配到了本地 IP 地址(即仅在本专用网内使用的专用地址),但现在又想和因特网上的主机通信(并不需要加密)时,可使用 NAT 方法。这种方法需要在专用网连接到因特网的路由器上安装 NAT 软件。装有 NAT 软件的路由器叫做 NAT 路由器,它至少有一个有效的外部全球 IP 地址。这样,所有使用本地地址的主机在和外界通信时,都要在 NAT 路由器上将其本地地址转换成全球 IP 地址,才能和因特网连接。
4、实现多对多的通信还是单对单通信
因 MQTT 协议的消息模型是发布/订阅式的,所以是可以多对多通信的;CoAP 协议的消息模型是请求 / 响应式的,所以是单对单通信。
5、服务质量等级及自动重连重发
因 MQTT 协议有 QoS 配置,支持服务质量等级和自动重连重发机制;CoAP 本身不具备,需要应用层自己来写这个逻辑。
6、对网络稳定性要求
MQTT 协议利用自动重连重发机制解决网络不稳定问题,断网就会触发重连;CoAP 协议只有客户端发送的时候需要保证网络连接正常,其他时段无需连接。
7、对硬件设备的功耗影响
MQTT 协议因有保持连接,所以功耗略高于 CoAP 协议。