Skip to content

第六层:网络通信与物联网协议(Network & IoT)

网络与物联网章节的重点是把“本地通信、无线接入、网络协议、云端接入和 OTA 运维”串成一条完整链路。阅读时要始终带着“数据从设备如何流到云端”这个视角。

建议学习目标:

  • 区分 UART、Socket、BLE、Wi-Fi、LoRa、ZigBee 等通信方式的边界。
  • 理解 MQTT、HTTP/HTTPS、CoAP 等协议适合什么场景。
  • 建立 TCP/IP、设备接入、云平台对接和 OTA 的整体认知。
  • 能对连接稳定性、安全性和远程升级风险有基本判断。

阅读建议:先学本地通信和网络基础,再看物联网协议和云接入,最后理解 OTA 与安全通信。


串口通信与Socket通信

串口通信

串口通信是嵌入式开发最基础的通信方式之一,常见于:

  • 调试日志输出
  • 模块通信
  • 下载协议
  • 上位机与设备交互

它的核心特点是:

  • 点对点
  • 串行传输
  • 通常为异步通信
  • 实现简单、成本低

串口调试时最常见的关注点是:

  • 波特率是否一致
  • 数据位、停止位、校验位是否一致
  • 电平标准是否匹配(TTL / RS-232 / RS-485)

Socket网络通信

Socket 是应用层访问网络协议栈的接口。它不是某个单独协议,而是“让程序能通过 TCP / UDP 进行通信”的抽象。

典型模式:

  • TCP Socket:面向连接,可靠,适合命令、控制、上传等场景
  • UDP Socket:无连接,时延小,适合广播、音视频、轻量消息

对嵌入式开发者来说,Socket 重点不是背函数名,而是理解:

  • 谁是客户端,谁是服务端
  • 使用 TCP 还是 UDP
  • 连接建立后如何处理超时、断线和重连

串口通信 vs Socket 通信:对比总结

维度串口通信Socket 通信
连接范围本地或短距离局域网 / 广域网
协议复杂度
实现成本相对更高
典型用途调试、模块直连联网、远程服务、云端接入

可以简单理解为:

  • 串口更像“设备内或设备旁边”的通信
  • Socket 更像“设备与网络世界”的通信

无线通信协议

Wi-Fi

Wi-Fi 适合需要较高带宽或直连局域网 / 互联网的场景。

优点:

  • 带宽高
  • 网络生态成熟
  • 易于接入现有路由器和云服务

缺点:

  • 功耗较高
  • 配网和稳定性处理更复杂

典型用途:

  • 智能家居
  • 摄像头
  • 网关设备

BLE(蓝牙低功耗)

BLE 适合低功耗、短距离、人机交互型场景。

典型用途:

  • 可穿戴设备
  • 手机配网
  • 传感器广播
  • 近距离控制

重点关注:

  • 广播与连接模式
  • 功耗预算
  • 手机兼容性

LoRa / ZigBee

这类协议更强调低功耗和广覆盖,适合分布式传感器和工业 / 农业场景。

LoRa 特点:

  • 覆盖远
  • 带宽低
  • 适合稀疏上报

ZigBee 特点:

  • 适合组网
  • 节点间可形成 Mesh
  • 常见于智能家居和工业网络

物联网协议栈

MQTT

MQTT 是典型的轻量级发布 / 订阅协议,广泛用于 IoT。

核心概念:

  • Broker
  • Topic
  • Publisher
  • Subscriber

优点:

  • 协议轻
  • 适合弱网络
  • 易做云端消息分发

适合场景:

  • 传感器上报
  • 远程控制
  • 云端状态同步

HTTP / HTTPS

HTTP 更适合请求 / 响应式交互,例如:

  • REST API
  • 配置下发
  • 固件下载
  • 日志上传

HTTPS 在 HTTP 之上增加 TLS 加密,适合对安全性有要求的联网设备。

实际项目中,HTTP / HTTPS 经常与 MQTT 共存:

  • MQTT 负责长连接消息流
  • HTTP / HTTPS 负责配置、查询和文件下载

CoAP / LwM2M

CoAP 面向资源受限设备,基于 UDP,适合低功耗环境。

LwM2M 则在 CoAP 之上定义了更完整的设备管理模型,常用于:

  • 远程配置
  • 生命周期管理
  • OTA 管理

如果项目强调“低功耗 + 远程设备管理”,这组协议很值得了解。


安全通信实践

联网设备不仅要能通信,还要能安全通信。

常见措施:

  • TLS / DTLS
  • 证书或预共享密钥
  • 设备身份认证
  • 防止重放攻击
  • 接口权限控制

工程中经常出现的误区:

  • 只顾连通,不顾身份校验
  • 明文传输敏感数据
  • 固件下载不做签名验证

安全测试

安全测试可以从这几个方向入手:

  • 弱口令与默认凭据
  • 未加密通信
  • OTA 包篡改
  • 端口暴露与异常服务
  • 重放与伪造数据包

对嵌入式联网设备来说,安全测试不必一开始就追求完整渗透测试,但至少要覆盖最基本的身份、传输和升级安全。


TCP/IP 协议栈基础与嵌入式实现

TCP/IP 协议栈分层结构(四层模型)

常见四层模型如下:

  1. 应用层
  2. 传输层
  3. 网络层
  4. 网络接口层

理解这个分层有助于区分:

  • MQTT / HTTP 在哪一层
  • TCP / UDP 在哪一层
  • IP / ICMP 在哪一层

TCP 与 UDP 区别

特性TCPUDP
连接方式面向连接无连接
可靠性
时延相对更高更低
典型用途控制、文件、云服务广播、音视频、轻量报文

没有哪一个绝对更好,关键是看场景。

嵌入式 TCP/IP 协议栈组件

嵌入式设备常见协议栈包括:

  • lwIP
  • uIP
  • 厂商 SDK 自带网络栈

从工程角度看,协议栈最关键的不是“支持多少协议”,而是:

  • 是否稳定
  • 内存占用是否可控
  • 是否易于调试
  • 与网卡 / Wi-Fi 模块驱动配合是否成熟

嵌入式 TCP/IP 通信流程(以 lwIP 为例)

典型流程:

  1. 初始化网络接口
  2. 获取 IP(静态或 DHCP)
  3. 建立 Socket 或上层协议连接
  4. 收发数据
  5. 处理断线、超时和重连

常用 API 示例(lwIP / BSD Socket)

很多嵌入式协议栈会尽量兼容 BSD Socket 风格接口,例如:

  • socket()
  • connect()
  • send()
  • recv()
  • close()

这让你从 PC 端网络编程过渡到嵌入式更容易。

DHCP / DNS / ICMP 说明

  • DHCP:自动获取 IP 地址
  • DNS:域名解析
  • ICMP:如 ping 使用的协议

它们看似基础,但实际排查联网问题时非常常用。


云平台接入 & OTA 实现

云平台对接

设备上云通常至少要考虑:

  • 身份认证
  • 数据上报格式
  • 指令下发方式
  • 连接断开后的恢复
  • 本地缓存策略

云平台的核心价值,不只是“把数据传上去”,而是提供:

  • 设备管理
  • 状态监控
  • 远程配置
  • 升级能力

OTA 升级机制

OTA 的关键不是“下载新固件”,而是“失败时还能活着回来”。

设计时应至少考虑:

  • 完整性校验
  • 版本控制
  • 双分区或回滚机制
  • 升级中断恢复
  • 升级状态上报

推荐学习顺序

  1. 先理解 UART 与 Socket 的差异
  2. 再理解 TCP / UDP 与协议栈分层
  3. 然后学习 MQTT、HTTP / HTTPS、CoAP 的适用场景
  4. 最后再看云接入和 OTA

常见问题 FAQ

问题解答
MQTT 断线如何重连?需要心跳、重连策略和状态机配合
OTA 更新失败怎么办?需要校验、回滚和双镜像设计
CoAP 和 MQTT 有何区别?CoAP 更轻量、偏资源访问;MQTT 更偏消息分发

本章小结

做 IoT 设备时,真正重要的是把通信链路拆清楚:本地总线、设备联网、协议封装、云端接入、运维升级,每一层都有不同的问题模型。掌握这一章,后续做联网产品会更有全局感。

最后更新于:

以 GitHub Pages 发布,使用 VitePress 构建。