4. DoIP车辆发现与连接建立

DoIP(Diagnostic over IP)诊断的第一步不是发诊断报文,而是先"找到车、连上、拿到诊断权限"。这一节围绕三个关键动作展开:车辆识别请求(Vehicle Identification Request)、车辆公告(Vehicle Announcement)与路由激活请求(Routing Activation Request)。理解它们各自跑在UDP还是TCP、携带什么参数、失败时如何判断,是后续刷写验证能否顺利进行的前提。

一、发现阶段:UDP广播找车

当诊断仪(CANoe)还不知道目标车辆的IP地址时,无法直接建立TCP连接。此时使用UDP广播,把车辆识别请求发到受限广播地址255.255.255.255,目的端口固定为13400(DoIP标准端口)。车辆收到后,通过车辆公告/识别响应单播回传自己的信息,典型字段包括:

  • VIN(车辆识别号,17位)
  • 逻辑地址(Logical Address),如0x0E00表示某ECU网关
  • 车辆IP地址与端口
  • 进一步动作(Further Action),如0x00表示无需中央安全认证即可继续

如果已知车辆IP,也可以跳过广播,直接向该IP的13400端口发UDP识别请求,这叫定向识别。广播方式适合"不知道车在哪"的首次发现,定向方式适合已知网段、快速复连的场景。

二、连接阶段:TCP三次握手与路由激活

拿到车辆IP后,CANoe向该IP的13400端口发起TCP连接。TCP连接建立只代表"网络通了",并不代表"允许诊断"。真正的诊断权限由路由激活决定:诊断仪通过TCP发送路由激活请求,携带激活类型(Activation Type)和源地址(Source Address)。车辆侧校验后返回路由激活响应,结果码常见有:

结果码含义常见原因
0x10成功激活通过,可发诊断
0x00未知源地址源地址未在车辆白名单
0x01所有Socket已占用并发连接数超限
0x02源地址不匹配源地址与已激活连接冲突
0x03已激活重复激活同一源地址
0x04需要认证需先完成安全认证

只有收到0x10,后续的诊断请求(如0x22读数据、0x31例程控制、刷写相关服务)才会被车辆接受。否则车辆会直接拒绝或丢弃诊断报文。

DoIP 车辆发现与连接建立时序 CANoe 诊断仪 车辆 / DoIP网关 ① UDP广播 车辆识别请求 → 255.255.255.255:13400 ② 车辆公告:VIN + 逻辑地址 + IP + Further Action ③ TCP SYN → 车辆IP:13400 ④ SYN-ACK,TCP连接建立 ⑤ 路由激活请求:Activation Type + Source Address ⑥ 路由激活响应 0x10 成功 ⑥' 拒绝:0x00/0x01/0x02/0x03/0x04 ⑦ 诊断请求(0x22 / 0x31 / 刷写服务) 发现 连接 激活 诊断

三、CANoe中的实际操作

在CANoe中,DoIP通信通常通过DoIP节点或诊断控制台(Diagnostic Console)配合DoIP配置完成。关键配置项包括:

  • 本机IP与网卡:必须与车辆在同一网段,例如车辆192.168.1.10,本机设为192.168.1.100,子网掩码255.255.255.0。
  • 源地址(Source Address):诊断仪逻辑地址,常用0x0E80或按项目规定,必须与车辆白名单一致。
  • 激活类型:默认0x00(默认激活),部分项目要求0x01(WWH-OBD)或0xE0(中央安全)。
  • 目标地址:车辆公告返回的逻辑地址,如0x0E00。

发送车辆识别请求时,CANoe的Trace窗口会显示UDP报文;收到公告后,再手动或自动发起TCP连接与路由激活。建议在Trace中同时打开DoIP解析,直接看到结果码,而不是只看原始字节。

四、常见故障排查

1. 收不到车辆公告。先确认本机IP是否与车辆同网段,防火墙是否拦截UDP 13400;再确认广播是否被交换机/VLAN隔离。若用定向识别,检查目标IP是否正确。

2. TCP连接失败。车辆IP可达但端口不通,可能是车辆DoIP未使能、端口被占用或路由未配置。用ping和telnet 车辆IP 13400快速判断。

3. 路由激活被拒绝。这是最常见的问题。若返回0x00,说明源地址不在车辆允许列表,需核对项目规定的诊断仪地址;若返回0x02,说明该源地址已被其他连接占用,需关闭重复连接;若返回0x04,需先完成安全认证再激活。

注意:路由激活成功后,若长时间不发诊断报文,车辆可能因超时关闭连接。刷写前应保持心跳或及时发送诊断请求。

五、可复用的排查清单

检查项正常表现异常处理
本机IP/掩码与车辆同网段改网卡IP或车辆网段
UDP 13400能收到公告查防火墙、VLAN、广播地址
TCP 13400三次握手成功查车辆DoIP使能、端口占用
源地址与白名单一致按项目规定修改
激活类型返回0x10换0x00/0x01/0xE0重试
并发连接无重复激活关闭多余Socket