第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

协议解决了“怎么说”的问题,而网络技术解决了“怎么传”的问题。下一章我们将探讨网络技术

« 上一篇 嵌入式系统基础 下一篇 » 网络技术:从 Wi-Fi 到 5G