目录
[一、 到底什么是"协议(Protocol)"?](#一、 到底什么是“协议(Protocol)”?)
[二、 为什么不能一个协议打天下啊?](#二、 为什么不能一个协议打天下啊?)
[三、 计算机网络的"四层千层饼"(必看)](#三、 计算机网络的“四层千层饼”(必看))
[四、物联网 / AIoT 协议全景大地图](#四、物联网 / AIoT 协议全景大地图)
[1. 底层通信技术(干苦力的"泥瓦匠")](#1. 底层通信技术(干苦力的“泥瓦匠”))
[2. 传输层协议(物流骨干网)](#2. 传输层协议(物流骨干网))
[3. 应用层协议(神仙打架的业务层,绝对重点!)](#3. 应用层协议(神仙打架的业务层,绝对重点!))
[五、 今日总结与明日预告](#五、 今日总结与明日预告)
大家好,做嵌入式和物联网的兄弟们一定有个共同的感触:搞硬件外设、写底层驱动、上实时操作系统,这些虽然难,但都是可见可控的。可一旦涉及"联网通信",面对各种五花八门的协议(TCP、UDP、HTTP、MQTT、CoAP......),直接满脸问号。
很多教程一上来就给你贴代码、讲MQTT怎么连,但从来不告诉你为什么要用它。不懂底层逻辑,换个项目照样抓狂。
所以,从今天开始,我开个新坑------【IoT协议死磕系列】。我会带着大家从零开始,逐级递增,把物联网(IoT)和人工智能物联网(AIoT)里的网络协议扒个底朝天。
第一天,咱们先建立全局观,搞懂协议的基础逻辑!
一、 到底什么是"协议(Protocol)"?
别去背教科书上"规则的集合"这种废话。协议的本质,就是"暗号"和"格式"。
假设你要给远方的朋友寄一封信,你不能随便拿张卫生纸写上字就扔进邮筒。你必须按照邮局的协议来:
-
物理介质: 必须用信封。
-
格式要求: 左上角写邮编,中间写地址,右下角贴邮票。
-
语言互通: 你得用快递员和收信人都能看懂的文字(比如中文)。
在嵌入式开发中,你的传感器就像写信的人,云平台就像收信人。它们之间要传输0和1的数据,就必须提前约定好:谁先发?谁后发?每次发几个字节?第1个字节代表什么(比如代表温度)?第2个字节代表什么(比如代表湿度)?
这种提前约定好的"数据打包和解包规则",就是协议。
二、 为什么不能一个协议打天下啊?
很多初学者会问:既然大家都要传数据,全世界统一规定一种协议不就行了吗?为什么搞得这么复杂?
因为应用场景的鸿沟太大了。我们来看看极端对比:
-
场景A(车联网/自动驾驶): 汽车需要传输高清摄像头画面、雷达数据给边缘计算节点。特点:电源充足、算力强大、需要极高带宽。
-
场景B(农业物联网/智能水表): 深埋在地下的水表,靠一节纽扣电池工作5年,每天只发几十字的用水量。特点:极度缺电、单片机资源极小(可能就几KB内存)、网络极差。
如果让智能水表去跑车联网的协议,单片机连协议的"头部数据"都装不下,电池几分钟就耗干了。所以,没有最好的协议,只有最适合当前硬件资源和网络环境的协议。
三、 计算机网络的"四层千层饼"(必看)
在讲具体的HTTP或TCP之前,必须先了解网络数据是怎么发出去的。
现代网络通信是分层 的。最常用的是 TCP/IP 四层模型。为了方便理解,你把它当成寄快递的公司架构:
-
应用层(老板/业务员): 老板只关心核心业务:"把这批货物(传感器数据)按我们的商业规则发给客户"。
常见的应用层协议:HTTP、MQTT、CoAP、FTP。
-
传输层(快递公司调度中心): 不管老板卖的是什么,调度中心只负责决定运输方式。是发顺丰(绝对不丢件),还是发便宜的快递(丢了不赔)?
这里的两大主角就是:TCP、UDP。
-
网络层(快递路径规划局): 负责分配地址和规划路线。包裹到了中转站,该往哪个城市发?这就是IP协议干的事(IP地址就是你在网络上的门牌号)。
-
网络接口层(底层卡车/飞机/物理线路): 这才是真正在物理层面运东西的。比如你用的Wi-Fi、以太网网线、4G/5G基站、蓝牙、Zigbee等底层介质。
划重点: 当你的设备要发送数据时,数据是从上往下,一层一层**"穿衣服(加包头)"**的。老板的货装进顺丰的箱子(加TCP头),再贴上地址单(加IP头),最后装上卡车(通过Wi-Fi发出去)。接收端则是一层层"脱衣服"。
四、物联网 / AIoT 协议全景大地图
你在单片机上调 I2C、SPI、配置 DMA,那叫板级通信 ;但当你跑通了RTOS,甚至想给设备加个OTA空中升级功能,要把数据扔到云端时,这就是网络通信的天下。
物联网的协议简直多如牛毛,为了不懵圈,这里严格按照网络层级,从最底层的物理传输,一直扒到最上层的业务应用。
1. 底层通信技术(干苦力的"泥瓦匠")
这是物理层和链路层干的事,决定了你的设备到底是通过"插线"还是"射频天线"把0和1发出去。
-
【有线阵营】稳定压倒一切
-
以太网 (Ethernet): 最常见的网线直连。STM32挂个以太网芯片(比如LAN8720),跑个LwIP协议栈,稳如老狗。
-
RS-485 / RS-232: 工业界的老古董,但至今依然在各种工控机和传感器里发光发热,抗干扰能力极强。
-
CAN 总线: 车企和机器人的最爱。多节点通信的神器,哪怕环境极其恶劣,报文也能准确送达。
-
工业以太网 (EtherCAT, PROFINET): 搞高端工业机器人和PLC必须懂,毫秒级甚至微秒级的硬实时通信。
-
-
【无线阵营 - 局域网】短距离乱战
-
Wi-Fi: 功耗大,但带宽足。适合插电的设备,比如智能音箱、大屏监控。
-
Bluetooth (BLE): 低功耗蓝牙,可穿戴设备和智能家居配网的绝对主力。
-
Zigbee / Thread: 智能家居专用的自组网协议,几十个灯泡开关互相传递信号,断了一个节点,其他节点会自动补位。
-
Matter: 最近全网爆火的"大一统"标准。苹果、谷歌、亚马逊牵头,旨在让所有智能家居跨品牌互通。
-
-
【无线阵营 - 广域网】长距离大动脉(LPWAN)
-
NB-IoT: 运营商基站支持的窄带物联网。极其省电,极其便宜,适合地下水表、燃气表(几年换一次电池)。
-
LoRa: 也是低功耗远距离,但它是私有网络。在没有基站的荒郊野岭、大农场,自己架个LoRa网关就能搞定覆盖。
-
4G / 5G / Cat.1: 视频监控、自动驾驶等需要大流量的场景必选,当然功耗也是最大的。
-
2. 传输层协议(物流骨干网)
这一层主要解决数据在互联网中怎么跑的问题。就两位大佬,我们今天只提名字和脾气,以后专门深挖:
-
TCP: 严谨的"保价顺丰"。发数据前必须经过经典的"三次握手"建立连接。极其可靠,绝不丢包,但开销大,占用RAM多。
-
UDP: 粗暴的"低价快递"。不建立连接,不管对方死活,直接把数据往目的IP扔。速度快,极度轻量,但可能会丢包。
尤其注意:一切应用层协议(HTTP、MQTT等)的脚下,都踩着 TCP(可靠但重) 或 UDP(不可靠但轻快) 这两块基石。
3. 应用层协议(神仙打架的业务层,绝对重点!)
这是我们嵌入式和软件工程师日常打交道最多的地方。这层协议决定了数据长什么样。
-
【老牌万金油】HTTP / HTTPS
-
定位: 网页浏览的基石,请求/响应模式。
-
在IoT中的地位: 实在太臃肿了,报文头部很大。但在物联网里依然有一席之地,特别是做 OTA(空中升级) 时,设备去服务器下载庞大的
.bin固件包,用HTTP下载依然是最稳的。
-
-
【物联网绝对霸主】MQTT
-
定位: 基于TCP,发布/订阅模式。
-
在IoT中的地位: 统治级。极其轻量,天生为弱网环境和低功耗设备设计。几乎所有的云平台(阿里云IoT、腾讯云、AWS)默认首推MQTT。
-
-
【极度抠门的小弟】CoAP
-
定位: 基于UDP的物联网协议。
-
在IoT中的地位: 可以理解为"瘦身版的HTTP"。如果你的单片机资源实在太小,连TCP协议栈都跑不起来(比如一些NB-IoT设备),那就用UDP + CoAP。
-
-
【高端玩家专属】DDS (Data Distribution Service)
-
定位: 基于发布/订阅的数据分发服务,极具实时性。
-
在IoT中的地位: 机器人(ROS2底层默认协议)和自动驾驶(车机内部通信)的御用协议。 它的特点是可以精确控制数据的传输时间、可靠性甚至历史记录,是高级别AIoT的核心。
-
-
【工业自动化一哥】OPC UA
-
定位: 跨平台工业通讯架构。
-
在IoT中的地位: 工厂里的各种PLC(西门子、三菱)互相不服气,协议不通。OPC UA就像一个"同声传译",统一了工业控制领域的数据格式。
-
-
【电信运营商的宠儿】LwM2M
-
定位: 轻量级设备管理协议。
-
在IoT中的地位: 基于CoAP之上,不但能传数据,还定义了怎么远程重启设备、怎么看电量。中国移动等运营商的平台非常喜欢用这个。
-
五、 今日总结与明日预告
今天,我们站在上帝视角,从物理层到应用层,把全网常见的物联网/机器人通信协议"点了一遍名",并梳理了网络协议的底层逻辑:
-
协议就是提前约定好的数据打包/解包"暗号"。
-
因为硬件资源和网络环境的巨大差异,诞生了各式各样的协议。
-
网络是分层的(应用层 -> 传输层 -> 网络层 -> 物理层)。
-
物联网 / AIoT 各个常见协议 科普
总结一个选型黄金法则:
如果你做工业控制和机器人,多关注 CAN、DDS、EtherCAT;
如果你做普通的智能硬件上云,闭眼选 Wi-Fi/4G + TCP + MQTT;
如果你做极低功耗的电池设备,研究 LoRa/NB-IoT + UDP + CoAP。
有了全景地图,明天我们要开始挖细节了!
既然大家天天都在用网络,明天我们就直击网络通信的核心基石------被无数面试官问吐了,也是一切可靠通信的源头:TCP/IP协议,和它极其经典的"三次握手与四次挥手"!
弄懂了TCP的底层逻辑,你以后调MQTT、做OTA下载,遇到断线重连的问题,也就能看透其大概的本质。
关注我,每天一个IoT硬核知识,我们明天见!
个人想说的话:
网络通信这一块确实枯燥,但我会尽量用大白话给大家嚼碎了喂到嘴里。大家目前在做项目时,最头疼的网络问题是什么?
看完这份地图,大家现在手头的项目,用的都是哪一套"物理层+应用层"的组合方案?在对接云平台或者板子互相通信的时候,遇到过什么诡异的丢包或者断线问题吗?欢迎在评论区留言,我们交流避坑!