如上图所示,本文从以下几个维度对物联网常见的几种协议进行阐述。
一、按网络四层协议分类:
NB-IoT,LORA,WIFI,蓝牙,zigbee,4G都是需要硬件支撑的。
MQTT,COAP,HTTP都是应用层协议,需要连接服务器,现在有很多物联网平台,比如阿里云,腾讯云,华为云等等。
所以(MQTT,COAP,HTTP)是居于(NB-IoT,LORA,WIFI,蓝牙,zigbee,4G)的上层协议物理层中。
二、按需要网关来分类:
- 不需要网关:NB-IoT,2G/4G/5G(芯片可以直接跟运营商:移动,联通,电信等运营商网络通信。)
- 需要网关:LORA,WIFI,zigbee(不能直接连上电信运营商,需要通过一个网关中转才能连接网络。)
蓝牙设备之间可以通信。
三、NB-IoT,4G对比:
NB-IoT低功耗,传输小数据,传输速度底,芯片模组和套餐便宜。目前NB基站还较少,不过华为在大力推这个通信方式,相信以后会普及。
2G/4G/5G:传输速度快和可以传输大的数据,但是功耗高,价格贵
WIFI和zigbee对比:
- wifi 功耗高,传输速率大11-54Mbps,功耗高10-50mA,距离短20-50m。一个路由只能加入较少设备。
- zigbee功耗低,传输数据慢100Kbps,功耗20mA,可以中继,距离远几百到几千米。一个zigbee网关可以加入成千上万的zigbee设备。
四、应用层协议:MQTT和COAP对比
1. MQTT
mqtt 是一个基于客户端-服务器的消息发布/订阅传输协议。MQTT协议是轻量、简单、开放和易于实现的,这些特点使它适用范围非常广泛。
是非常轻量化的通信协议,开销很小(固定头部2字节),是订阅/发布通信方式,可以一对多,多对一。是TCP通信协议。有三种方式,至多一次:
- 最多一次:保证尽力交付,
- 至少一次:保证消息至少传送一次。但是消息也可以不止一次传递。
- 只有一次:保证每个消息只被对方接收一次。
在很多情况下,包括受限的环境中,如:机器与机器(M2M)通信和物联网(IoT)、卫星链路通信传感器、偶尔拨号的医疗设备、智能家居、及一些小型化设备中已广泛使用。
2. coap
- COAP协议网络传输层由TCP改为UDP。
- 基于REST,server的资源地址和互联网一样也有类似url的格式,客户端同样有POST,GET,PUT,DELETE方法来访问server,对HTTP做了简化。
- COAP是二进制格式的,HTTP是文本格式的,COAP比HTTP更加紧凑。
- 轻量化,COAP最小长度仅仅4B,一个HTTP的头都几十个B了
- 支持可靠传输,数据重传,块传输。 确保数据可靠到达。
- 支持IP多播, 即可以同时向多个设备发送请求。
- 非长连接通信,适用于低功耗物联网场景。
3. DDS(Data Distribution Service for Real-Time Systems),面向实时系统的数据分布服务
这是大名鼎鼎的OMG组织提出的协议,其权威性应该能证明该协议的未来应用前景。
适用范围:分布式高可靠性、实时传输设备数据通信。目前DDS已经广泛应用于国防、民航、工业控制等领域。
特点:
- 以数据为中心
- 使用无代理的发布/订阅消息模式,点对点、点对多、多对多
- 提供多大21种QoS服务质量策略
协议主要实现:
- OpenDDS 是一个开源的 C++ 实现
- OpenSplice DDS
4. XMPP
XMPP是基于XML的协议,由于其开放性和易用性,在互联网及时通讯应用中运用广泛。相对HTTP,XMPP在通讯的业务流程上是更适合物联网系统的,开发者不用花太多心思去解决设备通讯时的业务通讯流程,相对开发成本会更低。但是HTTP协议中的安全性以及计算资源消耗的硬伤并没有得到本质的解决。在设计时都是根据互联网应用场景设计的,但是个协议的通病就是根本无法适用物联网设备的多样性,无法适用很多物联网设备对低功耗、低成本的需求,难以在极低资源的物联网设备中运用。
5. HTTP协议
HTTP协议是典型的CS通讯模式,由客户端主动发起连接,向服务器请求XML或JSON数据。该协议最早是为了适用web浏览器的上网浏览场景和设计的,目前在PC、手机、pad等终端上都应用广泛。
缺点是:
- 开销大,消息头大
- HTTP通信方式问题,HTTP的请求/应答方式的会话都是客户端发起的
- 安全性差