ISO 13400-2:2019 DoIP 协议一致性测试用例矩阵 v3.0
**覆盖范围**:Mandatory(强制)+ Optional(可选)
**总用例数**:133
**标注说明**:**M** = Mandatory(强制),**O** = Optional(可选)
域 A:DoIP 通用头部与基础(12 项)
| TC ID | 测试项 | 边界条件/场景 | 覆盖 REQ | 类型 |
|:------|:-------|:--------------|:---------|:----:|
| A-01 | 协议版本有效值 | 0x03(当前版本)、0x02(旧版兼容) | DoIP-036 | **M** |
| A-02 | 协议版本默认值 | 0xFF(车辆识别请求专用默认值) | DoIP-156 | **M** |
| A-03 | 协议版本无效值 | 0x00、0x01、0x04-0xFE(保留值) | DoIP-041 | **M** |
| A-04 | 逆向版本错误 | 0x03/0xFD(非补码)、0x03/0x00 | DoIP-041 | **M** |
| A-05 | NACK 0x00 格式错误 | 同步模式错误(如 0x02/0xFD)触发 NACK=0x00 | DoIP-087 | **M** |
| A-06 | NACK 0x01 未知类型 | Payload Type=0x1234、0x0009、0x4000 等未定义值 | DoIP-042 | **M** |
| A-07 | NACK 0x02 消息过大 | Payload Length > MDS(Max Data Size)+1 | DoIP-043 | **M** |
| A-08 | NACK 0x03 内存不足 | 快速发送导致缓冲区耗尽,触发 NACK=0x03 | DoIP-044 | **M** |
| A-09 | NACK 0x04 无效长度 | Header 声明长度与实际 TCP Payload 差异 ±1 字节 | DoIP-045 | **M** |
| A-10 | 制造商特定 Payload | Type=0xF000-0xFFFF(验证处理或静默丢弃) | Table 17 | **O** |
| A-11 | Big-Endian 验证 | 多字节字段(Length、Type)端序错误检测 | DoIP-035 | **M** |
| A-12 | 负载长度边界 | 0(空消息)、4294967295(U32 Max)、实际长度 ±1 | DoIP-035 | **M** |
域 B:车辆发现与识别(15 项)
| TC ID | 测试项 | 边界条件/场景 | 覆盖 REQ | 类型 |
|:------|:-------|:--------------|:---------|:----:|
| B-01 | 标准识别请求 | Payload Type 0x0001,无参数广播至 UDP_DISCOVERY | DoIP-046 | **M** |
| B-02 | VIN 识别有效 | 17 字节 ASCII 有效 VIN 码(0x0003) | DoIP-052 | **M** |
| B-03 | VIN 长度边界 | 16 字节、18 字节(错误长度处理) | DoIP-052 | **M** |
| B-04 | VIN 无效值 | 全 0x00 或全 0xFF(Table 1 无效值定义) | Table 1 | **M** |
| B-05 | EID 识别有效 | 6 字节 MAC 地址匹配(0x0002) | DoIP-053 | **O** |
| B-06 | EID 无效值 | 全 0x00/0xFF,5 字节、7 字节长度 | Table 1 | **O** |
| B-07 | 车辆通告时序 | 0ms(立即)、500ms(最大随机等待)、500ms 间隔、3 次重复 | DoIP-050 | **M** |
| B-08 | GID 同步状态 0x00 | VIN/GID 已同步(0x00) | Table 7 | **M** |
| B-09 | GID 同步状态 0x10 | 未同步(0x10)+ A_Vehicle_Discovery_Timer(5s) | DoIP-143 | **M** |
| B-10 | GID 保留值 | 0x11-0xFF(保留值处理) | Table 7 | **M** |
| B-11 | 进一步操作 0x00 | 无需进一步操作(0x00) | Table 6 | **M** |
| B-12 | 进一步操作 0x10 | 需要中央安全(0x10)触发认证流程 | DoIP-144 | **O** |
| B-13 | 制造商特定进一步操作 | 0x11-0xFF(制造商特定) | Table 6 | **O** |
| B-14 | 逻辑地址无效值 | 0x0000、0xFFFF(Table 1 无效值) | Table 1 | **M** |
| B-15 | 并发发现请求 | 多个测试设备同时广播识别请求 | DoIP-046 | **M** |
域 C:网络层配置(IP/AutoIP/DHCP)(8 项)
| TC ID | 测试项 | 边界条件/场景 | 覆盖 REQ | 类型 |
|:------|:-------|:--------------|:---------|:----:|
| C-01 | AutoIP 地址分配 | 169.254.x.x 范围,ARP 冲突检测与随机回退 | DoIP-098 | **M** |
| C-02 | AutoIP 快速模式 | 2s 内完成地址分配(Table 15 快速适配) | Table 15 | **M** |
| C-03 | DHCP 备选 | AutoIP 失败后转 DHCP 流程 | DoIP-098 | **M** |
| C-04 | 静态 IP 配置 | 制造商特定静态 IP 地址配置 | DoIP-098 | **O** |
| C-05 | 地址冲突检测 | ARP 探测冲突处理(RFC 3927) | DoIP-099 | **M** |
| C-06 | IP 分片禁止 | DF=1(Don't Fragment)标记验证 | RFC 791 | **M** |
| C-07 | Identification 递增 | IP ID 严格递增验证(每包 +1) | RFC 791 | **M** |
| C-08 | 生存时间 TTL | 默认值检查(通常 64 或 128) | RFC 791 | **M** |
域 D:TCP 连接管理(14 项)
| TC ID | 测试项 | 边界条件/场景 | 覆盖 REQ | 类型 |
|:------|:-------|:--------------|:---------|:----:|
| D-01 | 标准三次握手 | SYN、SYN-ACK、ACK 序列号交换与状态转换 | RFC 793 | **M** |
| D-02 | ISN 随机性 | 初始序列号不可预测性验证 | RFC 793 | **M** |
| D-03 | 序列号回绕 | 0xFFFFFFFF → 0x0000 回绕处理 | RFC 793 | **M** |
| D-04 | 序列号窗口外 | 无效 SEQ 处理(Challenge ACK,RFC 5961) | RFC 5961 | **M** |
| D-05 | 初始不活动超时 | T_TCP_Initial=2s(边界测试:1999ms/2001ms) | DoIP-084 | **M** |
| D-06 | 一般不活动超时 | T_TCP_General=5min(300s,边界 299s/301s) | DoIP-078 | **M** |
| D-07 | 半开连接重传 | SYN-ACK 指数退避(1s、2s、4s、8s) | RFC 1122 | **M** |
| D-08 | 同时打开 | 双方同时发送 SYN,进入 SYN-RECEIVED | RFC 793 | **O** |
| D-09 | 四次挥手 | FIN 占用序列号,TIME-WAIT(2MSL)保持 | RFC 793 | **M** |
| D-10 | 同时关闭 | 双方同时发送 FIN,进入 CLOSING 状态 | RFC 793 | **O** |
| D-11 | RST 处理 | 有效 RST 关闭连接,无效 RST 触发 Challenge ACK | RFC 793 | **M** |
| D-12 | 零窗口探测 | Window=0 后的零窗口定时器与探测机制 | RFC 1122 | **O** |
| D-13 | 最大段大小 MSS | 1460 字节协商与限制 | RFC 793 | **M** |
| D-14 | 并发连接边界 | 0、1、n(最大)、n+1(拒绝)连接数测试 | DoIP-060 | **M** |
域 E:路由激活(16 项)
| TC ID | 测试项 | 边界条件/场景 | 覆盖 REQ | 类型 |
|:------|:-------|:--------------|:---------|:----:|
| E-01 | 成功激活 0x00 | Type=0x00(默认),SA=0x0E00-0x0FFF | DoIP-062 | **M** |
| E-02 | 成功激活 0x01 | Type=0x01(法规诊断),无额外认证 | DoIP-151 | **M** |
| E-03 | 成功需确认 0x11 | Type=0x11,车内确认后激活(Pending) | DoIP-062 | **O** |
| E-04 | 未知 SA 0x00 | SA 未在 DoIP 实体注册表中 | DoIP-059 | **M** |
| E-05 | SA 范围边界 | 0x0E00(最小有效)、0x0FFF(最大有效) | Table 13 | **M** |
| E-06 | SA 保留值 | 0x0000、0xFFFF(Table 1 无效值) | Table 1 | **M** |
| E-07 | 并发满载 0x01 | n 个连接后第 n+1 个请求(响应码 0x01) | DoIP-060 | **M** |
| E-08 | SA 不匹配 0x02 | 同一 TCP 连接中第二次路由激活使用不同 SA | DoIP-149 | **M** |
| E-09 | SA 已注册 0x03 | 相同 SA 在新 Socket 上请求激活 | DoIP-150 | **M** |
| E-10 | 缺少认证 0x04 | Type=0xE0(中央安全)无认证信息 | DoIP-061 | **O** |
| E-11 | 确认被拒绝 0x05 | 用户拒绝确认(Type=0x11 场景) | DoIP-105 | **O** |
| E-12 | 不支持类型 0x06 | Type=0x02-0xDF(ISO/SAE 保留) | DoIP-151 | **M** |
| E-13 | 强制 TLS 0x07 | 非 TLS 连接请求安全激活类型(Type=0xE0) | DoIP-159 | **O** |
| E-14 | 中央安全 0xE0 | 制造商特定认证流程(若实现) | DoIP-061 | **O** |
| E-15 | 制造商特定类型 | 0xE1-0xFF(制造商特定激活类型) | Table 47 | **O** |
| E-16 | 路由激活超时 | TCP 建立后 2s 内无路由激活请求 | DoIP-055 | **M** |
域 F:诊断消息(12 项)
| TC ID | 测试项 | 边界条件/场景 | 覆盖 REQ | 类型 |
|:------|:-------|:--------------|:---------|:----:|
| F-01 | 正向确认 0x00 | Type=0x8002,Code=0x00,响应时间 ≤50ms | DoIP-067 | **M** |
| F-02 | 前序消息副本 | 0x8002 包含前序诊断消息数据(可选字段) | DoIP-067 | **O** |
| F-03 | 无效源地址 0x02 | SA 与路由激活时不一致 | DoIP-070 | **M** |
| F-04 | 未知目标地址 0x03 | TA 未在路由表配置 | DoIP-071 | **M** |
| F-05 | 消息过大 0x04 | > MDS(CAN 4095/CAN FD 8191 差异) | DoIP-072 | **M** |
| F-06 | 内存不足 0x05 | 连续发送导致目标缓冲区满 | DoIP-073 | **M** |
| F-07 | 目标不可达 0x06 | 网络层不可达(如 CAN 总线断开) | DoIP-103 | **O** |
| F-08 | 未知网络 0x07 | 目标网络未配置 | DoIP-104 | **O** |
| F-09 | 传输层错误 0x08 | CAN TP 等下层传输错误映射 | DoIP-107 | **O** |
| F-10 | 诊断消息边界 | 0 字节(最小)、MDS(最大) | DoIP-072 | **M** |
| F-11 | 诊断性能 | A_DoIP_Diagnostic_Message=50ms 性能要求 | Table 12 | **M** |
| F-12 | 并发诊断消息 | 多连接同时发送诊断消息 | DoIP-147 | **M** |
域 G:在线检查与连接管理(10 项)
| TC ID | 测试项 | 边界条件/场景 | 覆盖 REQ | 类型 |
|:------|:-------|:--------------|:---------|:----:|
| G-01 | Alive Check 触发-满载 | n 连接满时新请求触发旧连接检查 | DoIP-090 | **M** |
| G-02 | Alive Check 请求 | Payload Type=0x0007(TCP_DATA) | DoIP-092 | **M** |
| G-03 | Alive Check 响应 | Payload Type=0x0008,SA 字段正确 | DoIP-124 | **M** |
| G-04 | Alive Check 超时 | T_TCP_Alive_Check=500ms(精确边界) | DoIP-078 | **M** |
| G-05 | 无响应处理 | 500ms 内无响应关闭 Socket | DoIP-092 | **M** |
| G-06 | 新 Socket 抢占 | 旧连接关闭,新连接成功注册 SA | DoIP-094 | **M** |
| G-07 | 在线检查内容 | SA 字段与路由激活时一致性 | DoIP-124 | **M** |
| G-08 | 不活动保活 | 通过 0x0008 响应维持 5min 连接 | DoIP-124 | **M** |
| G-09 | 发送超时处理 | 诊断消息发送超时(若实现) | DoIP-076 | **O** |
| G-10 | 接收超时处理 | 诊断消息接收超时(若实现) | DoIP-077 | **O** |
域 H:DoIP 实体状态与电源模式(8 项)
| TC ID | 测试项 | 边界条件/场景 | 覆盖 REQ | 类型 |
|:------|:-------|:--------------|:---------|:----:|
| H-01 | 实体状态请求 | Payload Type=0x4001(UDP_DISCOVERY) | DoIP-110 | **O** |
| H-02 | 实体状态响应 | Payload Type=0x4002,节点类型、最大连接数 | DoIP-111 | **O** |
| H-03 | 最大数据大小 | MDS 字段数值验证 | DoIP-111 | **O** |
| H-04 | 当前连接数 | 动态变化验证(0 到 max) | DoIP-111 | **O** |
| H-05 | 电源模式请求 | Payload Type=0x4003(UDP_DISCOVERY) | DoIP-112 | **M** |
| H-06 | 电源模式响应就绪 | Type=0x4004,Mode=0x01(就绪) | DoIP-112 | **M** |
| H-07 | 电源模式响应未就绪 | Type=0x4004,Mode=0x00(未就绪) | DoIP-112 | **M** |
| H-08 | UDP 测试设备端口 | 动态端口范围 49152-65535 | Table 41 | **M** |
域 I:TLS 安全(18 项)
| TC ID | 测试项 | 边界条件/场景 | 覆盖 REQ | 类型 |
|:------|:-------|:--------------|:---------|:----:|
| I-01 | TLS 端口绑定 | TCP 3496(TLS)vs 13400(非 TLS)区分 | DoIP-163 | **M** |
| I-02 | 强制 TLS 拒绝 | 非 TLS 端口请求安全激活类型,NACK=0x07 | DoIP-159 | **O** |
| I-03 | TLS 1.2 服务器认证 | 单向认证完整握手(ClientHello...Finished) | DoIP-171 | **O** |
| I-04 | TLS 1.2 客户端认证 | 双向认证(若 ECU 实现) | DoIP-172 | **O** |
| I-05 | TLS 1.2 密码套件 | Table 30 所有强制套件协商 | DoIP-166 | **O** |
| I-06 | TLS 1.2 套件协商失败 | 客户端仅提供无效/不支持的套件 | DoIP-166 | **O** |
| I-07 | TLS 1.3 服务器认证 | 1-RTT 握手模式 | DoIP-173 | **M** |
| I-08 | TLS 1.3 客户端认证 | 双向认证(若支持) | DoIP-173 | **O** |
| I-09 | TLS 1.3 密码套件 | Table 31 所有强制套件(AES-128/256-GCM 等) | DoIP-168 | **M** |
| I-10 | 版本降级防护 | 强制使用 TLS 1.1/1.0,验证拒绝 | DoIP-165 | **M** |
| I-11 | 重协商拒绝 | 禁止 TLS 重协商请求 | DoIP-169 | **M** |
| I-12 | ALPN 扩展 | ClientHello 包含 "DoIP" 标识符协商 | DoIP-181 | **M** |
| I-13 | ALPN 不匹配 | 提供无效 ALPN 标识符,验证失败 | DoIP-181 | **M** |
| I-14 | SNI 扩展 | Server Name Indication 包含逻辑地址或 VIN | DoIP-182 | **M** |
| I-15 | 加密层 ECS | Encrypted Client Hello 或标记支持 | DoIP-183 | **M** |
| I-16 | 证书链完整 | Root→Intermediate→Leaf 验证 | DoIP-171 | **M** |
| I-17 | 证书过期 | 使用过期证书,验证握手失败 | DoIP-171 | **M** |
| I-18 | 证书撤销 | CRL/OCSP 检查(若 ECU 实现) | DoIP-171 | **O** |
域 J:错误处理与鲁棒性(10 项)
| TC ID | 测试项 | 边界条件/场景 | 覆盖 REQ | 类型 |
|:------|:-------|:--------------|:---------|:----:|
| J-01 | 未知目标地址处理 | 路由表中无 TA 时的处理 | DoIP-071 | **M** |
| J-02 | 重复连接处理 | 相同 SA 多次连接尝试 | DoIP-150 | **M** |
| J-03 | 畸形头部处理 | 随机字节流、非 DoIP 数据注入 | DoIP-041 | **M** |
| J-04 | 长度不一致 | Header 声明长度与实际 TCP Payload 差异 | DoIP-045 | **M** |
| J-05 | 中间人检测 | MAC/IP 地址异常变化检测 | DoIP-099 | **M** |
| J-06 | 广播风暴抑制 | 高频广播识别请求处理 | DoIP-046 | **M** |
| J-07 | 资源耗尽恢复 | 连接满后释放资源再连接 | DoIP-060 | **M** |
| J-08 | 时序违规 | 违反 A_DoIP_Ctrl、T_TCP_* 等时序要求 | Table 12 | **M** |
| J-09 | 协议版本协商 | 0xFF(默认)与 0x03 交互处理 | DoIP-156 | **M** |
| J-10 | 保留字段处理 | 保留字段非零容错处理 | DoIP-035 | **M** |
统计汇总
| 域 | 用例数 | Mandatory | Optional | 覆盖章节 |
|:---|:------:|:---------:|:--------:|:---------|
| A - 通用头部 | 12 | 9 | 3 | 9.2 |
| B - 车辆发现 | 15 | 11 | 4 | 7.2-7.5 |
| C - 网络层 | 8 | 7 | 1 | 7.7, 7.9, 12 |
| D - TCP 管理 | 14 | 11 | 3 | 8.2-8.4, 11 |
| E - 路由激活 | 16 | 10 | 6 | 9.2, 12.5 |
| F - 诊断消息 | 12 | 8 | 4 | 9.5, 9.6 |
| G - 在线检查 | 10 | 8 | 2 | 8.4, 9.6 |
| H - 实体状态 | 8 | 3 | 5 | 7.5-7.6, 11 |
| I - TLS 安全 | 18 | 11 | 7 | 第 10 章 |
| J - 鲁棒性 | 10 | 10 | 0 | 跨章节 |
| **总计** | **133** | **88** | **45** | **全覆盖** |