第7章:通信协议
设备接入网络后,如何高效地交换数据?这就需要统一的“语言”,即应用层通信协议。
7.1 MQTT 协议 (Message Queuing Telemetry Transport)
MQTT 是物联网领域最重要的协议,由 IBM 在 1999 年发布。
- 设计理念:轻量级、低带宽、不可靠网络。
- 通信模型:发布/订阅 (Publish/Subscribe) 模式。
- **Broker (代理)**:服务器,负责转发消息(如 Mosquitto, EMQ X)。
- **Publisher (发布者)**:发送数据的设备(如温度传感器)。
- **Subscriber (订阅者)**:接收数据的应用(如手机 APP)。
- **Topic (主题)**:消息的分类标签(如
home/livingroom/temp)。
- **QoS (服务质量)**:
- QoS 0:最多一次 (At most once)。发完即忘,不保证到达。
- QoS 1:至少一次 (At least once)。保证到达,但可能重复。
- QoS 2:只有一次 (Exactly once)。保证到达且不重复,开销最大。
- 适用场景:弱网环境、低功耗设备、多对多通信。
7.2 CoAP 协议 (Constrained Application Protocol)
CoAP 专为受限设备设计,被称为“物联网版的 HTTP”。
- 底层协议:基于 UDP,而非 TCP。
- 通信模型:请求/响应 (Request/Response) 模式,类似 HTTP (GET, POST, PUT, DELETE)。
- 特点:
- 报文极小:二进制头部只有 4 字节。
- 支持观察者模式:类似订阅功能,服务器可主动推送状态变更。
- 重传机制:在应用层实现了可靠传输(弥补 UDP 的不足)。
- 适用场景:极低功耗设备(如 NB-IoT 水表)、资源受限的微控制器。
7.3 HTTP/HTTPS 协议
虽然 HTTP 很臃肿,但在物联网中依然有一席之地。
- 特点:
- 通用性强:无需额外适配,Web 开发人员无缝接入。
- 开销大:文本协议,头部冗长,基于 TCP 三次握手。
- RESTful API:常用于云平台对外的接口,或设备进行一次性配置、固件下载。
- WebSocket:解决了 HTTP 只能由客户端发起的限制,实现全双工通信,常用于网页端实时监控。
7.4 协议对比与选型
| 特性 | MQTT | CoAP | HTTP |
|---|---|---|---|
| 底层协议 | TCP | UDP | TCP |
| 模式 | 发布/订阅 | 请求/响应 | 请求/响应 |
| 开销 | 极低 (头部2字节) | 极低 (头部4字节) | 高 |
| 实时性 | 高 (长连接) | 中 | 低 (短连接) |
| 适用场景 | 持续数据上报、控制指令 | 资源极度受限、偶尔唤醒 | 文件上传、API调用 |
选型建议:
- 如果设备需要实时控制或持续上报数据,首选 MQTT。
- 如果设备是NB-IoT/LoRa等窄带网络,且资源极少,考虑 CoAP。
- 如果设备需要上传图片/视频,或进行OTA升级,使用 HTTP。
协议解决了“怎么说”的问题,而网络技术解决了“怎么传”的问题。下一章我们将探讨网络技术。