ISO 13400-2:2019 (DoIP) 核心配置项参考手册
一、通用 DoIP 头部结构(所有消息基础)
表 16 - 通用 DoIP 头部结构
| 参数 | 位置 | 长度 | 描述 | 值 |
|---|---|---|---|---|
| 协议版本 | 0 | 1 byte | DoIP 协议版本 | 0x02=ISO 13400-2:2012 0x03=本版本 0xFF=车辆识别请求默认值 |
| 逆向协议版本 | 1 | 1 byte | 协议版本的按位反值 | 协议版本 XOR 0xFF |
| 负载类型 (GH_PT) | 2 | 2 bytes | 如何解释后续数据 | 见表 17 |
| 负载长度 (GH_PL) | 4 | 4 bytes | DoIP 消息负载长度(字节) | 0 到 4,294,967,295 |
| 负载类型特定消息内容 | 8 | variable | 负载特定消息从此开始 | - |
注意 :所有多字节字段均采用 大端序(Big-Endian) 网络字节序。
二、DoIP 报文类型(Payload Type)总览 ⭐⭐⭐⭐⭐
表 17 - DoIP 负载类型概览
| 负载类型值 | 负载类型名称 | 协议/端口 | 支持要求 |
|---|---|---|---|
0x0000 |
通用 DoIP 头部否定确认 | UDP_DISCOVERY / TCP_DATA | 强制 |
0x0001 |
车辆识别请求消息 | UDP_DISCOVERY | 强制 |
0x0002 |
带 EID 的车辆识别请求 | UDP_DISCOVERY | 可选 |
0x0003 |
带 VIN 的车辆识别请求 | UDP_DISCOVERY | 强制 |
0x0004 |
车辆通告/识别响应消息 | UDP_DISCOVERY | 强制 |
0x0005 |
路由激活请求 | TCP_DATA | 强制 |
0x0006 |
路由激活响应 | TCP_DATA | 强制 |
0x0007 |
在线检查请求 | TCP_DATA | 强制 |
0x0008 |
在线检查响应 | TCP_DATA | 强制 |
0x4001 |
DoIP 实体状态请求 | UDP_DISCOVERY | 可选 |
0x4002 |
DoIP 实体状态响应 | UDP_TEST_EQUIPMENT_REQUEST | 可选 |
0x4003 |
诊断电源模式信息请求 | UDP_DISCOVERY | 强制 |
0x4004 |
诊断电源模式信息响应 | UDP_TEST_EQUIPMENT_REQUEST | 强制 |
0x8001 |
诊断消息 | TCP_DATA | 强制 |
0x8002 |
诊断消息正向确认 | TCP_DATA | 强制 |
0x8003 |
诊断消息负向确认 | TCP_DATA | 强制 |
0xF000-0xFFFF |
制造商特定使用 | - | 可选 |
三、否定确认代码定义
3.1 通用头部否定确认 ⭐⭐⭐
表 19 - 通用 DoIP 头部否定确认代码
| 值 | 描述 | 必需操作 | 支持 |
|---|---|---|---|
0x00 |
模式格式错误 | 关闭套接字 | 强制 |
0x01 |
未知负载类型 | 丢弃消息 | 强制 |
0x02 |
消息过大 | 丢弃消息 | 强制 |
0x03 |
内存不足 | 丢弃消息 | 强制 |
0x04 |
无效负载长度 | 关闭套接字 | 强制 |
0x05-0xFF |
文档保留 | - | - |
3.2 诊断消息负向确认代码 ⭐⭐⭐
表 26 - 诊断消息负向确认代码
| 值 | 描述 | 支持 |
|---|---|---|
0x02 |
无效源地址 | 强制 |
0x03 |
未知目标地址 | 强制 |
0x04 |
诊断消息过大 | 强制 |
0x05 |
内存不足 | 强制 |
0x06 |
目标不可达 | 可选 |
0x07 |
未知网络 | 可选 |
0x08 |
传输协议错误 | 可选 |
3.3 诊断消息正向确认代码
表 24 - 诊断消息正向确认代码
| 值 | 描述 | 支持 |
|---|---|---|
0x00 |
路由确认应答(消息已接收并放入传输缓冲区) | 强制 |
四、报文参数详细定义
4.1 车辆识别请求/响应 ⭐⭐⭐⭐⭐
表 1 - 车辆识别参数值(未设置时的无效值)
| 参数 | 长度 | 无效值 |
|---|---|---|
| VIN | 17 bytes | 0x00 或 0xFF |
| 逻辑地址 | 2 bytes | 0x0000 或 0xFFFF |
| 实体 ID (EID) | 6 bytes | 0x00 或 0xFF |
| 组 ID (GID) | 6 bytes | 0x00 或 0xFF |
表 2 - 车辆识别请求消息(Payload Type 0x0001)
- 请求参数:无消息参数
表 3 - 带 EID 的车辆识别请求(Payload Type 0x0002)
| 参数 | 位置 | 长度 | 描述 | 支持 |
|---|---|---|---|---|
| EID | 0 | 6 bytes | DoIP 实体的唯一 ID(如 MAC 地址) | 强制 |
表 4 - 带 VIN 的车辆识别请求(Payload Type 0x0003)
| 参数 | 位置 | 长度 | 描述 | 支持 |
|---|---|---|---|---|
| VIN | 0 | 17 bytes | 车辆识别号(ASCII) | 强制 |
表 5 - 车辆通告/识别响应消息(Payload Type 0x0004)
| 参数 | 位置 | 长度 | 描述 | 支持 |
|---|---|---|---|---|
| VIN | 0 | 17 | 车辆识别号(未配置时使用无效值 0x00/0xFF) | 强制 |
| 逻辑地址 | 17 | 2 | DoIP 实体的逻辑地址 | 强制 |
| EID | 19 | 6 | 实体唯一 ID(推荐 MAC 地址) | 强制 |
| GID | 25 | 6 | 组 ID(未同步时使用无效值) | 强制 |
| 进一步操作要求 | 31 | 1 | 通知客户端是否需要进一步操作 | 强制 |
| VIN/GID 同步状态 | 32 | 1 | 同步状态(0x00=同步完成,0x10=未完成) | 可选 |
表 6 - 进一步操作代码值
| 值 | 描述 | 支持 |
|---|---|---|
0x00 |
无需进一步操作 | 强制 |
0x10 |
需要路由激活以启动中央安全 | 可选 |
0x11-0xFF |
制造商特定使用 | 可选 |
表 7 - VIN/GID 同步状态代码值
| 值 | 描述 | 支持 |
|---|---|---|
0x00 |
VIN 和/或 GID 已同步 | 强制 |
0x10 |
未完成:VIN 和 GID 未同步 | 强制 |
0x11-0xFF |
文档保留 | - |
4.2 路由激活相关 ⭐⭐⭐⭐⭐
表 46 - 路由激活请求(Payload Type 0x0005)
| 参数 | 位置 | 长度 | 描述 | 支持 |
|---|---|---|---|---|
| 源地址 (SA) | 0 | 2 bytes | 客户端 DoIP 地址 | 强制 |
| 激活类型 | 2 | 1 byte | 路由激活类型(见表 47) | 强制 |
| 文档保留 | 3 | 4 bytes | 未来标准化保留(默认值 0x00000000) | 可选 |
| 制造商特定使用 | 7 | 4 bytes | 制造商特定数据 | 可选 |
表 47 - 路由激活请求激活类型
| 值 | 描述 | 必需操作 | 支持 |
|---|---|---|---|
0x00 |
默认激活 | 无 | 强制 |
0x01 |
法规要求的诊断通信 | 无 | 强制 |
0x02-0xDF |
ISO/SAE 保留 | - | - |
0xE0 |
中央安全 | 制造商特定 | 可选 |
0xE1-0xFF |
制造商特定使用 | 制造商特定 | 可选 |
表 48 - 路由激活响应(Payload Type 0x0006)
| 参数 | 位置 | 长度 | 描述 | 支持 |
|---|---|---|---|---|
| 客户端逻辑地址 | 0 | 2 bytes | 请求路由激活的客户端地址 | 强制 |
| DoIP 实体逻辑地址 | 2 | 2 bytes | 响应的 DoIP 实体地址 | 强制 |
| 路由激活响应码 | 4 | 1 byte | 响应结果(见表 49) | 强制 |
| 文档保留 | 5 | 4 bytes | 未来标准化保留 | 强制 |
| 制造商特定使用 | 9 | 4 bytes | 制造商特定数据 | 可选 |
表 49 - 路由激活响应代码值
| 值 | 描述 | 必需操作 | 支持 |
|---|---|---|---|
0x00 |
由于未知源地址拒绝路由激活 | 关闭 TCP_DATA 套接字 | 强制 |
0x01 |
所有并发 TCP_DATA 套接字已注册并激活 | 关闭 TCP_DATA 套接字 | 强制 |
0x02 |
接收到的 SA 与已激活套接字连接表条目不同 | 关闭 TCP_DATA 套接字 | 强制 |
0x03 |
SA 已在不同套接字上注册并激活 | 关闭 TCP_DATA 套接字 | 强制 |
0x04 |
由于缺少认证拒绝路由激活 | 不激活路由,注册 | 可选 |
0x05 |
由于确认被拒绝拒绝路由激活 | 关闭 TCP_DATA 套接字 | 可选 |
0x06 |
由于不支持的路由激活类型拒绝 | 关闭 TCP_DATA 套接字 | 强制 |
0x07 |
需要安全 TLS 连接 | 关闭(非 TLS)套接字 | 可选 |
0x10 |
路由激活成功 | 激活路由并注册 SA | 强制 |
0x11 |
路由激活需要确认 | 仅在确认后激活路由 | 可选 |
4.3 诊断消息相关 ⭐⭐⭐⭐⭐
表 21 - 诊断消息结构(Payload Type 0x8001)
| 参数 | 位置 | 长度 | 描述 | 支持 |
|---|---|---|---|---|
| 源地址 (SA) | 0 | 2 bytes | 发送方逻辑地址 | 强制 |
| 目标地址 (TA) | 2 | 2 bytes | 接收方逻辑地址 | 强制 |
| 用户数据 (UD) | 4 | d-4 bytes | 实际诊断数据(如 ISO 14229-1 请求) | 强制 |
表 23 - 诊断消息正向确认(Payload Type 0x8002)
| 参数 | 位置 | 长度 | 描述 | 支持 |
|---|---|---|---|---|
| 源地址 (SA) | 0 | 2 bytes | 接收方逻辑地址 | 强制 |
| 目标地址 (TA) | 2 | 2 bytes | 发送方逻辑地址 | 强制 |
| 确认码 | 4 | 1 byte | 正向确认码(0x00=路由确认) | 强制 |
| 前序诊断消息数据 | 5 | 0- bytes | 前序消息的副本(可选,用于调试) | 可选 |
表 25 - 诊断消息负向确认(Payload Type 0x8003)
| 参数 | 位置 | 长度 | 描述 | 支持 |
|---|---|---|---|---|
| 源地址 (SA) | 0 | 2 bytes | 接收方逻辑地址 | 强制 |
| 目标地址 (TA) | 2 | 2 bytes | 发送方逻辑地址 | 强制 |
| NACK 码 | 4 | 1 byte | 负向确认码(见表 26) | 强制 |
| 前序诊断消息数据 | 5 | 0- bytes | 前序消息的副本(可选) | 可选 |
4.4 在线检查 ⭐⭐⭐
表 27 - 在线检查请求(Payload Type 0x0007)
- 请求参数:无附加消息元素
表 28 - 在线检查响应(Payload Type 0x0008)
| 参数 | 位置 | 长度 | 描述 | 支持 |
|---|---|---|---|---|
| 源地址 (SA) | 0 | 2 bytes | 当前在 TCP_DATA 套接字上活动的客户端地址 | 强制 |
4.5 DoIP 实体状态与电源模式
表 8 - 诊断电源模式信息请求(Payload Type 0x0003)
- 请求参数:无
表 9 - 诊断电源模式信息响应(Payload Type 0x4004)
| 参数 | 位置 | 长度 | 描述 | 支持 |
|---|---|---|---|---|
| 诊断电源模式 | 0 | 1 byte | 0x00=未就绪, 0x01=就绪 |
强制 |
表 10 - DoIP 实体状态请求(Payload Type 0x4001)
- 请求参数:无
表 11 - DoIP 实体状态响应(Payload Type 0x4002)
| 参数 | 位置 | 长度 | 描述 | 支持 |
|---|---|---|---|---|
| 节点类型 | 0 | 1 byte | 0x00=网关, 0x01=节点 |
强制 |
| 最大并发 TCP_DATA 套接字数 | 1 | 1 byte | 支持的最大并发现诊断 TCP 连接数 | 强制 |
| 当前已激活 TCP_DATA 套接字数 | 2 | 1 byte | 当前已建立的路由激活数量 | 强制 |
| 最大数据大小 | 3 | 4 bytes | DoIP 实体可接收的最大诊断数据字节数 | 强制 |
五、网络配置与寻址 ⭐⭐⭐⭐⭐
5.1 逻辑地址分配
表 13 - 逻辑地址概览
| 地址范围 | 描述 |
|---|---|
0x0000 |
ISO/SAE 保留 |
0x0001-0x0DFF |
制造商特定 |
0x0E00-0x0FFF |
客户端设备保留 |
0x0E00-0x0E7F |
外部法规诊断测试设备(如排放测试) |
0x0E80-0x0EFF |
外部制造商/售后增强诊断测试设备 |
0x0F00-0x0F7F |
内部数据收集/车载诊断设备 |
0x0F80-0x0FFF |
外部长期数据收集设备(如保险记录仪) |
0x1000-0x7FFF |
制造商特定 |
0x8000-0xCFFF |
ISO/SAE 保留 |
0xD000-0xDFFF |
SAE 卡车与总线控制通信委员会保留 |
0xE000-0xE3FF |
用例特定标准定义(如 ISO 27145) |
0xE400-0xEFFF |
制造商定义的功能组逻辑地址 |
0xF000-0xFFFF |
ISO/SAE 保留 |
5.2 端口配置
表 39 - 支持的 TCP 端口
| 名称 | 协议 | 端口号 | 描述 |
|---|---|---|---|
| TCP_DATA | TCP | 13400 (非安全) / 3496 (TLS) | 客户端与车辆服务器间的 DoIP 路由消息 |
表 41 - UDP 端口
| 名称 | 协议 | 端口号 | 描述 |
|---|---|---|---|
| UDP_DISCOVERY | UDP | 13400 | 车辆信息请求和控制命令 |
| UDP_TEST_EQUIPMENT_REQUEST | UDP | 动态分配 (49152-65535) | 客户端源端口 |
表 20 - UDP 和 TCP 端口使用场景
| 用例 | 负载类型 | 源端口 | 目标端口 | 协议 | 寻址 |
|---|---|---|---|---|---|
| 车辆发现 | 识别请求 | UDP_TEST_EQUIPMENT_REQUEST | UDP_DISCOVERY | UDP | 多播/单播 |
| 车辆发现 | 识别响应 | UDP_DISCOVERY 或动态分配 | UDP_TEST_EQUIPMENT_REQUEST | UDP | 单播 |
| 数据发送 | 路由激活等 | 动态分配 | TCP_DATA | TCP/TLS | 单播 |
六、时序与通信参数 ⭐⭐⭐⭐⭐
表 12 - DoIP 时序和通信参数
| 参数名称 | 描述 | 参数值 |
|---|---|---|
| A_DoIP_Ctrl | UDP 消息响应超时(含广播收集) | 2 秒 |
| A_DoIP_Announce_Wait | 车辆识别响应初始随机等待时间 | 0-500 毫秒 |
| A_DoIP_Announce_Interval | 车辆通告消息间隔 | 500 毫秒 |
| A_DoIP_Announce_Num | 通告消息重复次数 | 3 次 |
| A_DoIP_Diagnostic_Message | 诊断消息处理性能要求 | 50 毫秒 |
| T_TCP_General_Inactivity | TCP_DATA 套接字通用不活动超时 | 5 分钟 |
| T_TCP_Initial_Inactivity | TCP_DATA 初始不活动超时(无路由激活) | 2 秒 |
| T_TCP_Alive_Check | 在线检查响应等待超时 | 500 毫秒 |
| A_Processing_Time | 无响应消息的 DoIP 消息处理等待时间 | 2 秒 |
| A_Vehicle_Discovery_Timer | VIN/GID 同步等待时间 | 5 秒 |
七、安全配置(TLS)
表 29 - TLS 认证类型
| TLS 认证 | 客户端要求 | 服务器要求 |
|---|---|---|
| 服务器认证 | 至少拥有颁发 DoIP 实体证书的 CA 证书 | DoIP 实体证书 + 私钥(可发送中间证书) |
| 客户端认证 | 个人证书 + 私钥 + CA 证书 | DoIP 实体证书 + 验证客户端的中间证书 |
表 30 - TLS 1.2 接受的密码套件(部分)
TLS_ECDHE_ECDSA_WITH_AES_128_GCM_SHA256TLS_ECDHE_ECDSA_WITH_AES_256_GCM_SHA384TLS_ECDHE_ECDSA_WITH_CHACHA20_POLY1305_SHA256TLS_ECDHE_RSA_WITH_AES_128_GCM_SHA256TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384TLS_ECDHE_RSA_WITH_CHACHA20_POLY1305_SHA256
表 31 - TLS 1.3 接受的密码套件
TLS_AES_128_GCM_SHA256TLS_AES_256_GCM_SHA384TLS_CHACHA20_POLY1305_SHA256TLS_AES_128_CCM_SHA256TLS_AES_128_CCM_8_SHA256
八、支持要求说明
- 强制(Mandatory):所有 DoIP 实体必须实现的功能
- 可选(Optional):由制造商决定是否实现的功能
- 制造商特定(OEM Specific):具体行为由车辆制造商定义
附录:完整表格索引(共 37 张)
| 章节 | 表格编号 | 表格名称 | 重要性 |
|---|---|---|---|
| 7.4 | 表 1 | 车辆识别参数值 | ⭐⭐⭐ |
| 7.5 | 表 8 | 诊断电源模式信息请求 | ⭐ |
| 7.5 | 表 9 | 诊断电源模式信息响应 | ⭐ |
| 7.6 | 表 10 | DoIP 实体状态请求 | ⭐ |
| 7.6 | 表 11 | DoIP 实体状态响应 | ⭐ |
| 7.7 | 表 12 | DoIP 时序和通信参数 | ⭐⭐⭐⭐⭐ |
| 7.8 | 表 13 | 逻辑地址概览 | ⭐⭐⭐⭐⭐ |
| 7.9 | 表 14 | DHCP 在 OSI 层 | ⭐ |
| 7.9 | 表 15 | IETF RFC 3927 适配时序 | ⭐⭐ |
| 9.2 | 表 16 | 通用 DoIP 头部结构 | ⭐⭐⭐⭐⭐ |
| 9.2 | 表 17 | DoIP 负载类型概览 | ⭐⭐⭐⭐⭐ |
| 9.2 | 表 18 | 通用 DoIP 头部否定确认结构 | ⭐⭐⭐ |
| 9.2 | 表 19 | 通用 DoIP 头部否定确认代码 | ⭐⭐⭐ |
| 9.4 | 表 20 | UDP 和 TCP 端口使用 | ⭐⭐⭐⭐⭐ |
| 9.5 | 表 21 | 诊断消息结构 | ⭐⭐⭐⭐⭐ |
| 9.5 | 表 22 | ISO 27145-3 请求消息示例 | ⭐ |
| 9.5 | 表 23 | 诊断消息正向确认结构 | ⭐⭐⭐ |
| 9.5 | 表 24 | 诊断消息正向确认代码 | ⭐⭐ |
| 9.5 | 表 25 | 诊断消息负向确认结构 | ⭐⭐⭐ |
| 9.5 | 表 26 | 诊断消息负向确认代码 | ⭐⭐⭐ |
| 9.6 | 表 27 | 在线检查请求 | ⭐⭐ |
| 9.6 | 表 28 | 在线检查响应 | ⭐⭐ |
| 10.2 | 表 29 | TLS 认证类型 | ⭐⭐ |
| 10.2 | 表 30 | TLS 1.2 密码套件 | ⭐⭐ |
| 10.2 | 表 31 | TLS 1.3 密码套件 | ⭐⭐ |
| 10.2 | 表 32-37 | TLS 扩展支持列表 | ⭐ |
| 11.1 | 表 38 | TCP 在 OSI 层 | ⭐ |
| 11.1 | 表 39 | 支持的 TCP 端口 | ⭐⭐⭐⭐⭐ |
| 11.2 | 表 40 | UDP 在 OSI 层 | ⭐ |
| 11.2 | 表 41 | UDP 端口 | ⭐⭐⭐⭐⭐ |
| 12.1 | 表 42 | IPv4/IPv6 在 OSI 层 | ⭐ |
| 12.2 | 表 43 | ARP 在 OSI 层 | ⭐ |
| 12.3 | 表 44 | NDP 在 OSI 层 | ⭐ |
| 12.4 | 表 45 | ICMP 在 OSI 层 | ⭐ |
| 12.5 | 表 46 | 路由激活请求 | ⭐⭐⭐⭐⭐ |
| 12.5 | 表 47 | 路由激活类型 | ⭐⭐⭐⭐⭐ |
| 12.5 | 表 48 | 路由激活响应 | ⭐⭐⭐⭐⭐ |
| 12.5 | 表 49 | 路由激活响应代码 | ⭐⭐⭐⭐⭐ |
⭐ 标记说明:⭐⭐⭐⭐⭐ 为最关键的核心配置表,协议一致性测试必须实现。