物联网协议分类: 接入协议、通讯协议
- 接入协议:一般负责子网内设备间的组网及通信。
- 通讯协议:主要是运行在传统互联网 TCP/IP 协议之上的设备通讯协议,负责设备通过互联网进行数据交换及通信。
一、物理层、数据链路层协议
1. 远距离蜂窝通讯
- 2G、3G、4G 通讯协议
- NB-loT (Narrow Brand Internet of Things) 窄带物联网
- 5G
2. 远距离非蜂窝通讯
- WiFi
- ZigBee
- LoRa(LongRange)
3. 近距离通讯
- RFID(Radio Frequency Identification)射频识别
- NFC
- Bluetooth(BLE)
- UWB (Ultra Wideband)无载波无线通讯技术
4. 有线通信
- USB(Universal Series Bus)通用串行总线
- 串口通讯协议,RS-232、RS-422 和 RS-485
- 以太网
- MBus(symphonic mbus)远程抄表系统
二、网络层、传输协议
- IPv4
- IPv6
- TCP(Transmission Control Protocol)传输控制协议
- 6LowPAN
三、应用层协议
- MQTT(Message Queue Telemetry Transport)遥测传输协议
- CoAP(Constrained Application Protocol)协议
- REST / HTTP 协议
- DDS(Data Distribution Service)分布式实时数据分发服务中间件协议
- AMQP(Advanced Message Queuing Protocol)高级消息队列协议
- XMPP(Extensible messaging and presence protocol 基于 XML 协议)可扩展通讯和表示协议
四、部分协议比较
1. NB-IoT 协议和 LoRa 协议比较
第一,频段。LoRa 工作在 1GHz 以下的非授权频段,在应用时不需要额外付费,NB-IoT 和蜂窝通信使用 1GHz 以下的频段是 2113 授权的,是需要收费的。
第二,电池供电寿命。LoRa 模块在处理干扰、网络 5261 重迭、可伸缩性等方面具有独特的特性,但却不能提供像蜂窝协议一样的服务质量 4102。NB-IoT 出于对服务质量的考虑,不能提供类似 LoRa 一样的电池寿命。
第三,设备成本。对终端节点来说,LoRa 协议比 NB-IoT 更简单,更容易开发并且 1653 对于微处理器的适用和兼容性更好。同时低成本、技术相对成熟的 LoRa 模块已经可以在市场上找到了,并且还会有升级版本陆续出来。
第四,网络覆盖和部署时间表。NB-IoT 标准在 2016 年公布,除回网络部署之外,相应的商业化和产业链的建立还需要更长的时间和努力去探索。LoRa 的整个产业链相对已经较为成熟了,产品也处于“蓄势待答发”的状态,同时全球很多国家正在进行或者已经完成了全国性的网络部署。
2. 蓝牙、WiFi、ZigBee 协议比较
目前来说,WiFi 的优势是应用广泛,已经普及到千家万户;ZigBee 的优势是低功耗和自组网;UWB 无载波无线通信技术的优势是传输速率;蓝牙的优势组网简单。然而,这 3 种技术,也都有各自的不足,没有一种技术能完全满足智能家居的全部要求。
蓝牙技术的出现使得短距离无线通信成为可能,但其协议较复杂、功耗高、成本高等特点不太适用于要求低成本、低功耗的工业控制和家庭网络。尤其蓝牙最大的障碍在于传输范围受限,一般有效的范围在 10 米左右,抗干扰能力不强、信息安全问题等问题也是制约其进一步发展和大规模应用的主要因素。
WiFi 也是是一种短距离无线传输技术,可以随时接入无线信号,移动性强,比较适合在办公室及家庭的环境下应用。当然 WiFi 也存在一个致命缺点。由于 WiFi 采用的是射频技术,通过空气发送和接收数据,使用无线电波传输数据信号,比较容易受到外界的干扰。
ZigBee 则是国际通行的无线通讯技术,它的每个网络端口可以最多接入 6.5 万多个端口,适合家居、工业、农业等多个领域使用,而蓝牙和 WiFi 网端只能接入 10 个端口,显然不能适应家庭需要。ZigBee 还具有低功耗和低成本优势。
3. MQTT 协议和 CoAP 协议比较
MQTT 是多对多通讯协议用于在不同客户端之间通过中间代理传送消息,解耦生产者与消费者,通过使得客户端发布,让代理决定路由并且拷贝消息。虽然 MQTT 支持一些持久化,最好还是作为实时数据通讯总线。
CoAP 主要是一个点对点协议,用于在客户端与服务器之间传输状态信息。虽然支持观察资源,CoAP 最好适合状态传输模型,不是完全基于事件。
MQTT 客户端建立长连接 TCP,这通常表示没有问题,CoAP 客户端与服务器都发送与接收 UDP 数据包,在 NAT 环境中,隧道或者端口转发可以用于允许 CoAP,或者像 LWM2M,设备也许会先初始化前端连接。
MQTT 不提供支持消息打类型标记或者其他元数据帮助客户端理解,MQTT 消息可用于任何目的,但是所有的客户端必须知道向上的数据格式以允许通讯,CoAP,相反地,提供内置支持内容协商与发现,允许设备相互探测以找到交换数据的方式。
两种协议各有优缺点,选择合适的取决于自己的应用。