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)完成服务上线、订阅与事件组订阅,再以单播或组播传输事件。

车载网络协议分层与报文封装关系 应用与服务层 诊断应用 UDS SOME/IP 服务方法 音视频流 控制信号 车身开关 传输与网络层 DoIP / TCP-UDP IP / 以太网 VLAN MOST 控制/同步信道 FlexRay 静态/动态段 LIN 调度表 数据链路与帧结构 CAN / CAN FD 帧 以太网 MAC 帧 MOST 帧 FlexRay 帧 LIN 帧 物理层 双绞线差分 100/1000BASE-T1 光纤环 双通道差分 单线 12V 渗透测试观察点 CAN:ID 优先级与仲裁位 | CAN FD:BRS/ESI 与 DLC 映射 | LIN:PID 校验与调度周期 FlexRay:周期计数与静态段时隙 | DoIP:路由激活与负载类型 | SOME/IP:服务发现与消息类型

四、案例与场景:一次跨协议诊断链路

假设测试人员通过 OBD 口对网关后方的域控制器发起诊断。链路为:PC 工具 → DoIP(以太网)→ 网关 → CAN FD → 目标 ECU。工具先发 UDP 车辆识别请求,收到响应后建立 TCP 连接并发送路由激活请求,网关返回激活成功;随后发送诊断消息负载类型,网关将其转换为 CAN FD 帧转发。若目标 ECU 只支持经典 CAN,网关还需做 CAN FD 到 CAN 的协议转换,此时 DLC 与填充规则会变化,测试脚本必须按实际链路调整。

在 SOME/IP 场景中,服务发现报文使用 UDP 组播,事件订阅成功后事件以 UDP 单播或组播推送。若只抓 TCP 会漏掉服务发现与事件,导致“服务明明存在却订阅不上”的误判。

五、常见误区与复盘清单

误区正确认识验证方法
把 CAN ID 当作地址CAN ID 表意且决定仲裁优先级,非点对点地址观察同一 ID 被多个节点发送
认为 CAN FD 一定更快仅数据段提速,仲裁段仍为标称速率示波器测 BRS 前后位宽
LIN 从节点可主动发送从节点仅响应主节点报头抓取无报头时的总线活动
DoIP 可直接发诊断请求必须先完成路由激活检查激活响应码
SOME/IP 事件走 TCP事件通常走 UDP,需先订阅事件组抓取 SD 订阅与事件报文
复盘时重点核对:协议版本与接口版本是否匹配、DLC 与实际负载长度是否一致、CRC 与校验字段是否被篡改、时间同步是否丢失。这些字段既是功能正确性的关键,也是攻击面所在。