带过几个产品落地之后,你就会发现,所谓技术的复杂度,最后往往都集中在协议上。我举个例子:一个物联网项目搞不定,多半不是单片机跑不起来,而是设备之间、设备与云端之间的那几种协议没有理顺。从I2C读传感器,到CAN连控制器,再到MQTT上云,最后还要面对Matter、MCP这种新协议——这十年,我见过太多协议从红极一时到淡出视野,也见过不少老协议越活越滋润。今天这篇,我就想结合自己的实际经历,把“协议十年演进”这件事从头到尾梳理一遍,顺便聊聊协议背后的设计逻辑和踩坑经验。如果你是做嵌入式、物联网、网络或者工业自动化的,这篇应该对你有用。
1. 协议这十年,到底演进了什么
1.1 十年里协议变化的主线:从“单点打通”到“生态互通”
十年前我做嵌入式开发的时候,脑子里对协议的理解很简单:I2C就是两根线读传感器,UART就是把调试信息打到串口助手上,Modbus就是PLC和上位机之间转来转去的那几个寄存器。这些协议解决的都是“一台设备和另一台设备怎么说话”的问题,范围很窄,场景很固定。
现在完全不一样了。同样一个传感器节点,不仅要和主控芯片通信,还要通过BLE MESH组网,再经网关用MQTT上云,云端又通过HTTP/HTTPS接口和业务系统对接,最后手机App再用WebSocket或者MQTT把指令下发给设备。一整条链路下来,至少要经过五六种协议。协议的任务已经从“单点打通”变成了“生态互通”。
所以我说这十年协议演进的主线,不是某一种协议替代另一种,而是整个协议栈的层级变厚了、协作变多了。过去你只需要关心物理层和数据链路层,现在你得关心网络层怎么组网、传输层怎么保证可靠性、应用层怎么描述业务数据,甚至还要考虑生态层的互联互通标准。这也解释了为什么很多老协议现在还活着——它们在自己的层级和场景里依然是最优解。
1.2 驱动协议演进的三股力量:设备规模、网络环境、应用形态
第一个驱动力是设备规模。十年前一个项目可能只有几十个节点,现在动辄几万、几十万台设备在线。设备多了,地址分配、公网接入、安全认证、消息路由全都成了问题。这就逼出了大量专为物联网设计的协议,比如MQTT、CoAP,还有Matter这类面向多设备生态的标准。
第二个驱动力是网络环境的变化。以前设备基本在局域网内跑,带宽充足、链路可靠,协议设计根本不需要考虑丢包重传。现在大量设备在弱网、跨网段、甚至跨越公网的环境下工作,协议就必须在实时性和可靠性之间做权衡。SRT协议就是典型的例子,为了在公网上稳定传视频,它把TCP的重传机制搬到了UDP之上,效果还出奇地好。
第三个驱动力是应用形态的升级。早期设备就是采集数据、远程控制,协议简单直接。现在有视频监控、语音交互、AI推理这些重负载应用,对带宽、延迟、抖动的要求完全不同。你看PCIe从3.0一路升级到6.0,USB从2.0升到USB4,背后都是应用在倒逼协议升级。
1.3 那些“消失”和“新冒出来”的协议
十年间真正“死掉”的协议其实不多,更多是被边缘化。比如RTMP,当年直播全靠它,现在WebRTC和SRT起来之后,RTMP更多是作为兼容层存在。SSLv3因为POODLE漏洞被强制禁用,被TLS 1.2/1.3取代。Flash相关的协议生态几乎全军覆没,连带着RTMP的统治地位也没了。
新冒出来的协议又分两类。一类是从旧协议演变过来的,比如CAN FD就是CAN 2.0的升级版,Wi-Fi 6/7还是802.11家族,“新”主要体现在速率和组网能力上。另一类是彻底的新物种,比如Matter协议,专门为解决智能家居生态碎片化而设计;还有MCP协议,2024年才发布,直接在AI模型和外部工具之间定义了一套标准通信方式。
我的一个体会是:协议的更替不完全是技术优劣的比拼,更多是场景选择的结果。Modbus技术老旧、效率不高,但它在工业现场就是好用,所以
