3. 车辆网络协议与通信原理
车辆电子电气架构由多条异构总线叠加而成,不同协议服务于不同带宽、实时性与成本目标。理解每种协议的报文结构与通信机制,是后续做报文逆向、模糊测试、重放攻击与入侵检测的前提。本节按“低速控制—高速实时—多媒体—IP 化骨干”的顺序梳理七类协议,并给出渗透测试中可直接使用的观察点。
一、核心原理:从事件触发到时间触发的通信模型
车载通信可归为两类触发模型。事件触发(CAN、LIN、车载以太网)在数据变化时发送,带宽利用率高但存在仲裁延迟与抖动;时间触发(FlexRay、MOST 的同步信道)按固定时隙发送,确定性好但需要全局时钟同步。DoIP 与 SOME/IP 则属于面向服务的 IP 通信,把信号封装为服务方法调用,是 SOA 架构的基础。
- CAN / CAN FD:多主仲裁、广播式,标识符既表意又表优先级;CAN FD 通过可变数据段速率与最长 64 字节负载提升吞吐。
- LIN:单主多从、低成本,主节点发报头,从节点按调度表响应,适合车窗、雨刮等非安全件。
- FlexRay:双通道、10 Mbps,静态段+动态段,用于线控底盘等硬实时场景。
- MOST:环形拓扑、面向流媒体,用光纤传输音频视频与控制信息。
- 车载以太网 / DoIP / SOME/IP:100BASE-T1/1000BASE-T1 物理层,DoIP 承载诊断,SOME/IP 承载服务调用。
二、报文结构逐层拆解
CAN 标准帧由 SOF、11 位标识符、RTR、IDE、r0、4 位 DLC、0~8 字节数据、15 位 CRC、ACK 槽与 EOF 组成;CAN FD 将 DLC 扩展为 4 位并支持 12/16/20/24/32/48/64 字节,同时引入 BRS 位切换数据段速率、ESI 位指示错误状态。LIN 帧由同步间隔场、同步场 0x55、受保护标识符 PID 与 1~8 字节响应组成,PID 含 6 位帧 ID 与 2 位奇偶校验。FlexRay 帧包含帧头(指示位、帧 ID、负载长度、头部 CRC、周期计数)、最多 254 字节负载与 24 位帧 CRC。
以太网侧,DoIP 报文 = 通用头(协议版本、反版本、负载类型、负载长度)+ 负载,负载类型区分车辆识别请求/响应、路由激活、诊断消息等;SOME/IP 报文 = 消息 ID(服务 ID+方法 ID)、长度、请求 ID(客户端 ID+会话 ID)、协议版本、接口版本、消息类型、返回码与负载,支持请求/响应、火忘(Fire and Forget)与事件/字段通知三种交互。
CAN FD 帧关键字段(示意)
SOF | ID(11/29) | BRS | ESI | DLC(4bit) | Data(0~64B) | CRC(17/21) | ACK | EOF
SOME/IP 头部(16 字节)
MessageID(4) | Length(4) | RequestID(4) | ProtoVer(1) | IfaceVer(1) | MsgType(1) | ReturnCode(1)
三、通信机制与典型场景
CAN 采用非破坏性逐位仲裁:标识符数值越小优先级越高,节点边发边听,仲裁失败自动转为接收并重试。CAN FD 在同一帧内切换速率,需收发器与控制器同时支持。LIN 主节点按调度表轮询,从节点仅在收到匹配 PID 后应答,睡眠与唤醒通过诊断帧或唤醒脉冲实现。FlexRay 通信周期由静态段、动态段、符号窗与网络空闲时间构成,静态段用 TDMA 保证确定性,动态段用迷你时隙按优先级分配。
MOST 环形网络中,时序主节点产生帧,各节点在分配的时隙内写入数据,控制消息走控制信道、流媒体走同步信道。车载以太网以交换机为中心组星型或环型骨干,VLAN 与优先级标签保障音视频与控制的 QoS。DoIP 在 TCP/UDP 之上运行,UDP 用于车辆发现与状态查询,TCP 用于诊断数据传输,需先完成路由激活才能发诊断请求。SOME/IP 通过服务发现(SOME/IP-SD)完成服务上线、订阅与事件组订阅,再以单播或组播传输事件。
四、案例与场景:一次跨协议诊断链路
假设测试人员通过 OBD 口对网关后方的域控制器发起诊断。链路为:PC 工具 → DoIP(以太网)→ 网关 → CAN FD → 目标 ECU。工具先发 UDP 车辆识别请求,收到响应后建立 TCP 连接并发送路由激活请求,网关返回激活成功;随后发送诊断消息负载类型,网关将其转换为 CAN FD 帧转发。若目标 ECU 只支持经典 CAN,网关还需做 CAN FD 到 CAN 的协议转换,此时 DLC 与填充规则会变化,测试脚本必须按实际链路调整。
五、常见误区与复盘清单
| 误区 | 正确认识 | 验证方法 |
|---|---|---|
| 把 CAN ID 当作地址 | CAN ID 表意且决定仲裁优先级,非点对点地址 | 观察同一 ID 被多个节点发送 |
| 认为 CAN FD 一定更快 | 仅数据段提速,仲裁段仍为标称速率 | 示波器测 BRS 前后位宽 |
| LIN 从节点可主动发送 | 从节点仅响应主节点报头 | 抓取无报头时的总线活动 |
| DoIP 可直接发诊断请求 | 必须先完成路由激活 | 检查激活响应码 |
| SOME/IP 事件走 TCP | 事件通常走 UDP,需先订阅事件组 | 抓取 SD 订阅与事件报文 |