车载以太网之要火系列 - 番外篇4:从DoIP到SOME/IP,一个初学者的“越级碰瓷”

写在开篇

今晚有点晚,来不及学多少了,但还得来凑点字数。

DoIP+UDS的35篇笔记,终于边学边写,搞完了。

从第21篇到第35篇,说实话,学得并不轻松。

有些地方到现在还是迷迷糊糊的------比如27服务那几级权限,我写的时候觉得自己懂了,过两天再看又有点懵。还有刷固件那十六步,顺序到现在都没完全背下来。

但不管怎么说,一路火花带闪电,好歹是走完了。

然后我就开始琢磨------

DoIP是给车看病的,那车正常跑的时候呢?车里那么多ECU、域控制器,它们之间是怎么聊天的?

摄像头怎么告诉域控制器"我看到人了"?座舱怎么告诉音响"放首歌"?BMS怎么告诉整车"我电量不多了"?

这些,DoIP不管。

那谁管?

江湖上有个大名鼎鼎的协议,叫SOME/IP。

我没学过,但听说过。

就像小时候听大人们聊"降龙十八掌",知道很厉害,但具体怎么打,不知道。

这不,刚学完DoIP,心里痒痒的,就想碰碰这个SOME/IP。

有点像练武的人刚学会了一套拳,就想去挑战隔壁门派的大弟子。越级碰瓷,自不量力,但忍不住。

一、先搞清楚SOME/IP是干啥的

我翻了翻资料,大概弄明白了一件事:

DoIP是"诊"------车坏了才用。
SOME/IP是"聊"------车正常开着的时候,各个模块之间互相通信。

举个不太恰当的例子:

  • DoIP = 你去医院看病。医生问你"哪儿不舒服",你说"头疼",医生给你开药。一问一答,有来有回。

  • SOME/IP = 你身体里各个器官自己聊天。心脏跟肺说"我要血",肺说"我给你氧气"。不用你去指挥,它们自己协调。

黄蓉(如果我笔下真有黄蓉的话)肯定会说:"哦~~DoIP是看病,SOME/IP是养生!"

差不多就是这个意思。

二、传统方式 vs SOME/IP

车载通信的老祖宗是CAN总线。

CAN总线的特点是:广播。

不管哪个节点发消息,全车都能收到。不管你需不需要,都得听。

就像你在小区楼下喊了一嗓子"今天吃饺子",全楼的人都听见了。想听的听见了,不想听的也听见了。浪费带宽,还吵。

SOME/IP不一样。 它是面向服务的------谁需要谁调用,不需要的不打扰。

比如座舱域控制器想放个音乐,它只需要跟音响说一声就行。BMS、VCU、ADAS这些模块,根本不需要知道有人在放歌。

这就叫服务调用。

更厉害的是,SOME/IP还支持服务发现。

音响启动后,会在网络上喊一嗓子:"我支持放音乐服务!"座舱域控制器听到了,记在小本本上:"哦,音响会放音乐,以后找它。"

不用提前配IP、配端口,动态发现,即插即用。

这点比DoIP灵活多了------DoIP都要提前约好逻辑地址,SOME/IP是自动找。

三、SOME/IP的四种"说话方式"

我翻了翻资料,SOME/IP主要有四种通信模式:

模式 怎么玩 举个栗子
Request-Response 你问一句,它答一句 座舱问"当前车速多少",VCU答"80km/h"
Fire&Forget 你喊一声,不管它回不回 座舱喊"开窗",BCM收到就开,不回话
Event 出事了自己往外喊 BMS检测到电压异常,主动报"我要炸了"
Field 订阅某个状态,变了就通知 座舱订阅"车门状态",门一开就收到通知

这不就跟UDS有点像?UDS是请求/响应,SOME/IP是请求/响应+事件+订阅。

但UDS是给人看病,SOME/IP是给机器聊天。目标不一样,手段也不一样。

四、SOME/IP和DoIP到底啥关系

我试着总结了一下:

对比维度 DoIP SOME/IP
全称 Diagnostic over IP Scalable Service-Oriented MiddlewarE over IP
我的理解 给车看病 车里模块自己聊天
啥时候用 车坏了、刷固件 车正常跑的时候
谁说话 诊断仪 ↔ ECU ECU之间、域控制器之间
通信模式 请求/响应 请求/响应 + 事件 + 订阅/发布
端口 13400 30490(常见配置)
底层 都是UDP/TCP,都是车载以太网 都是UDP/TCP,都是车载以太网

所以它们不是谁替代谁,而是分工不同:

  • DoIP负责"保健":车出问题了,去修。刷固件、读故障码、清DTC。

  • SOME/IP负责"干活":车正常开,所有模块互相配合。摄像头传数据、座舱调音量、BMS汇报电量。

一个管"生病",一个管"生活"。

五、我为什么想碰SOME/IP

学完DoIP,总感觉车载以太网这块还有一大片空白。

DoIP只是冰山一角,而且是"应急用"的那一角。

真正的车载以太网,每天都在跑着大量的SOME/IP消息------座舱和音响聊天,ADAS和摄像头聊天,BMS和VCU聊天......

这些消息长什么样?怎么抓包?怎么解析?

我不知道。

但我想知道。

就像练武的人,学会了一套拳法,总想知道下一套是什么。

虽然现在的我刚摸到门,离精通还差十万八千里。虽然学DoIP的时候,很多地方还在迷迷糊糊。

但不去碰,永远不知道。

六、写在最后

这篇番外,不算技术笔记。

更像是一个初学者的一点碎碎念------

DoIP刚学完,还没捂热,就想去碰SOME/IP。

明知越级,但还是忍不住。

不指望一篇番外就能搞懂SOME/IP,只是想给自己挖个坑,先记下来"有这么一个东西",以后慢慢填。

毕竟,降龙十八掌也不是一天练成的。

DoIP写完了,SOME/IP......再说吧。

打完收工,886。

相关推荐
2501_915106321 小时前
抓包抓到乱码或压缩字节怎么解析,TraceEagle五种查看模式和一键解码
网络协议·计算机网络·网络安全·ios·adb·https·udp
情 九1 小时前
MCP 实战 06:把 HTTP 接口接成工具,让 AI 帮你查数据
人工智能·网络协议·http·mcp
Da Da 泓2 小时前
五子棋 Web 端测试用例报告
前端·网络·websocket·网络协议·测试用例·项目
万联WANFLOW10 小时前
异地组网速度忽快忽慢到底怎么回事?直连与中继的判断方法和处理步骤
运维·网络·网络协议·p2p
步行cgn12 小时前
HTTP 请求报文结构详解:请求行、请求头、请求体各自的作用
网络·网络协议·http
OpenLoong 开源社区15 小时前
打破 NAT 限制,零侵入跨网络通信:基于 WebRTC 的透明 TCP 隧道跨网络通信方案
网络协议·tcp/ip·开源·webrtc·openloong开源社区
从琳开始98915 小时前
从Socket到UDP回显服务器:Java网络编程完整指南
java·网络·网络协议·udp·java-ee
明天也要努力学习1 天前
HTTP 协议的基本格式和 fiddler 的用法
网络协议·http·fiddler
Tel199253080041 天前
温度湿度信号转WiFi/MQTT/Modbus TCP采集模块 无线传输
网络·网络协议·tcp/ip·工业自动化·工控设备
lazy H1 天前
【计算机网络】第 13 篇:NAT 和端口映射是什么?为什么本地服务外网访问不了?
java·网络·网络协议·学习·计算机网络·408