第六层:网络通信与物联网协议(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 协议栈分层结构(四层模型)
常见四层模型如下:
- 应用层
- 传输层
- 网络层
- 网络接口层
理解这个分层有助于区分:
- MQTT / HTTP 在哪一层
- TCP / UDP 在哪一层
- IP / ICMP 在哪一层
TCP 与 UDP 区别
| 特性 | TCP | UDP |
|---|---|---|
| 连接方式 | 面向连接 | 无连接 |
| 可靠性 | 高 | 低 |
| 时延 | 相对更高 | 更低 |
| 典型用途 | 控制、文件、云服务 | 广播、音视频、轻量报文 |
没有哪一个绝对更好,关键是看场景。
嵌入式 TCP/IP 协议栈组件
嵌入式设备常见协议栈包括:
- lwIP
- uIP
- 厂商 SDK 自带网络栈
从工程角度看,协议栈最关键的不是“支持多少协议”,而是:
- 是否稳定
- 内存占用是否可控
- 是否易于调试
- 与网卡 / Wi-Fi 模块驱动配合是否成熟
嵌入式 TCP/IP 通信流程(以 lwIP 为例)
典型流程:
- 初始化网络接口
- 获取 IP(静态或 DHCP)
- 建立 Socket 或上层协议连接
- 收发数据
- 处理断线、超时和重连
常用 API 示例(lwIP / BSD Socket)
很多嵌入式协议栈会尽量兼容 BSD Socket 风格接口,例如:
socket()connect()send()recv()close()
这让你从 PC 端网络编程过渡到嵌入式更容易。
DHCP / DNS / ICMP 说明
- DHCP:自动获取 IP 地址
- DNS:域名解析
- ICMP:如
ping使用的协议
它们看似基础,但实际排查联网问题时非常常用。
云平台接入 & OTA 实现
云平台对接
设备上云通常至少要考虑:
- 身份认证
- 数据上报格式
- 指令下发方式
- 连接断开后的恢复
- 本地缓存策略
云平台的核心价值,不只是“把数据传上去”,而是提供:
- 设备管理
- 状态监控
- 远程配置
- 升级能力
OTA 升级机制
OTA 的关键不是“下载新固件”,而是“失败时还能活着回来”。
设计时应至少考虑:
- 完整性校验
- 版本控制
- 双分区或回滚机制
- 升级中断恢复
- 升级状态上报
推荐学习顺序
- 先理解 UART 与 Socket 的差异
- 再理解 TCP / UDP 与协议栈分层
- 然后学习 MQTT、HTTP / HTTPS、CoAP 的适用场景
- 最后再看云接入和 OTA
常见问题 FAQ
| 问题 | 解答 |
|---|---|
| MQTT 断线如何重连? | 需要心跳、重连策略和状态机配合 |
| OTA 更新失败怎么办? | 需要校验、回滚和双镜像设计 |
| CoAP 和 MQTT 有何区别? | CoAP 更轻量、偏资源访问;MQTT 更偏消息分发 |
本章小结
做 IoT 设备时,真正重要的是把通信链路拆清楚:本地总线、设备联网、协议封装、云端接入、运维升级,每一层都有不同的问题模型。掌握这一章,后续做联网产品会更有全局感。
