车载以太网网络测试-20【传输层-DOIP协议-3】
1 摘要
本文继续对ISO 13400-2定义的节点管理报文进行介绍,主要对路由激活请求/响应报文以及在线检查请求/响应报文的作用、帧结构以及示例进行介绍。
上文回顾:
车载以太网网络测试-19【传输层-DOIP协议-2】
在进行详细介绍之前,还是先回顾一下DOIP诊断通信流程的示意图,如下图:
原文链接:
车载网络测试-DOIP诊断通信流程分析

2 0x0005:Routing activation request报文
在车辆发现阶段结束后,外部诊断仪已经知道了对哪台车以及哪个DoIP节点进行诊断,也获取了必要的信息,这时就需要发送路由激活请求报文,在诊断设备和被诊断的DoIP节点间建立起TCP连接,以便于发送诊断数据(诊断报文都是用TCP来发送的)。
2.1 Routing activation request报文的作用
DOIP(Diagnostics over Internet Protocol)协议中的 Routing Activation Request 报文是用于在车辆诊断通信中激活诊断通信路径的重要报文。
它的主要作用如下:
-
激活通信路径:
在DOIP协议中,诊断通信的双方(如诊断工具和车辆ECU)需要建立一个逻辑连接,才能进行后续的诊断数据传输。
Routing Activation Request 报文用于请求激活某个特定的通信路径,使诊断工具能够与目标ECU建立连接。 -
工作流程:
- 诊断工具向目标ECU发送 Routing Activation Request 报文。
- 目标ECU接收到请求后,检查自身状态和请求参数。
- 如果请求有效,ECU会回复 Routing Activation Response 报文,确认通信路径已激活。
- 诊断工具收到确认后,即可开始发送诊断请求(如读取故障码、写入数据等)。
Routing Activation Request 报文是DOIP协议中用于建立诊断通信连接的关键报文。它确保了诊断工具与目标ECU之间的通信路径被正确激活,为后续的诊断操作提供了基础。
2.2 Routing Activation Request 报文帧结构
报文的数据格式如下:
DOIP协议的Routing Activation Request报文帧结构如下:
| 字段 | 长度(字节) | 描述 |
|---|---|---|
| Source Address(SA) | 2 | 发送方的逻辑地址 |
| Activation Type | 1 | 激活类型,表示请求的路由激活类型 |
| Reserved by this document | 4 | 保留字段,通常为 0x00000000 |
| Reserved for VM-specific use | 4 | 保留字段,通常为 0x00000000 |
数据共11字节,包含以下内容:
1.源地址(SourceAddress):
外部诊断设备的逻辑地址。这个逻辑地址用于对某个特定的DoIP节点进行寻址,与UDSonCAN中的CAN ID是类似的概念,是在网络架构设计阶段就分配好的。
标准中的范围划分如下图所示:

其中:
- 红色框内的范围用于诊断设备的逻辑地址,0x0E00-0x0E7F用于OBD诊断,0x0E80-0x0EFF用于增强型诊断。
- 蓝色框内的逻辑地址用于DoIP节点,与UDSonCAN类似,节点的逻辑地址有两个,一个是物理逻辑地址,在0x0001-0x0DFF或0x1000-0x7FFF范围内,另一个是功能寻址,是0xE000。
2. 激活类型(activation type):
用于诊断设备通知被诊断DoIP节点进入哪种类型的诊断状态。定义如下:

- 表示请求的路由激活类型,常见的值包括:
0x00:默认激活类型,用于常规诊断通信。0x01:用于全球统一的车辆诊断(World Wide Harmonized On-Board Diagnostics)。0xE0:用于中央安全相关的诊断通信。
2.3示例报文
流程如下图所示,先与DoIP实体通过TCP建立连接:

然后测试仪发送负载类型为0x0005的路由激活请求,Doip实体响应负载类型为0x0006的激活响应报文。

3 0x0006:Routing activation response报文
3.1 Routing activation response报文的作用
在DoIP协议中,Routing activation response报文的作用是确认诊断请求的激活状态。
具体来说,Routing activation response报文的作用包括:
-
确认激活请求:当诊断工具发送Routing activation request报文请求激活某个通信通道时,车辆中的DoIP实体(如ECU)会通过Routing activation response报文来确认该请求是否成功。
-
返回激活状态:Routing activation response报文中包含一个状态码,用于指示激活请求的结果。例如,状态码可以表示成功激活、激活失败或激活被拒绝等。
-
提供附加信息:除了状态码外,Routing activation response报文还可能包含其他相关信息,如激活的通信通道的详细信息或错误描述。
-
确保通信准备就绪:通过发送Routing activation response报文,车辆中的DoIP实体通知诊断工具通信通道已准备好进行后续的诊断数据传输。
总结来说,Routing activation response报文的主要作用是确认诊断请求的激活状态,并确保诊断工具和车辆之间的通信通道已成功建立,为后续的诊断数据传输做好准备。
3.2 Routing activation response报文帧结构
路由激活响应报文主要是对上面路由激活请求报文的响应,的数据格式如下:

响应中的参数定义如下:
- 诊断设备逻辑地址(Logical address of the external test equipment):诊断仪的逻辑地址。
- DoIP节点逻辑地址(Logical address of the responding DoIP entity):DoIP节点物理逻辑地址。

ISO 13400-2 是诊断通信标准的一部分,主要涉及基于IP的诊断通信(DoIP,Diagnostics over Internet Protocol)。在DoIP协议中,路由激活响应码(Routing Activation Response Code)是一个关键参数,用于指示路由激活请求的处理结果。
- 路由激活响应码(Routing activation response code):1字节,它由DoIP实体(如车辆中的DoIP网关或ECU)发送,以告知请求方(如诊断工具)路由激活请求的处理状态。它确保了诊断通信的可靠性和高效性,并提供了明确的错误处理机制。通过理解和使用路由激活响应码,诊断工具可以更好地管理与车辆ECU的通信。比如:用来表示TCP连接建立是否成功,以及不成功的原因。
定义如下表所示,Required Action栏展示了DoIP节点在返回响应后应该采取的操作。

- 其余字段为预留或自定义字段,不常用。
3.3 常见Routing activation response code示例
- 路由激活成功(10)

- 不支持的SA地址(0x00)
如下图, 0x0101是DoIP实体不支持的SA地址,所以DoIP实体响应了0x00 状态码。

- 已经激活的TCP连接上使用不同的SA地址(0x02)
如下图,在已经激活的TCP连接上,使用了不同的SA地主,DoIP实体报0x02状态码

- 不同的TCP连接上使用相同的SA地址(0x03)
如下图,在不同的TCP连接上,不可以使用相同的SA地址,否则Doip实体报0x03状态码

4 0x0007:Alive check request与0x0008:Alive check response报文
在ISO 13400-2标准中,0x0007:Alive Check Request 报文用于诊断通信中的连接保持机制。它的主要作用是确认通信双方(客户端与服务器)之间的连接是否仍然活跃。
4.1 Alive check request与Alive check response报文作用
-
检测连接状态
客户端(如诊断工具)向服务器(如车辆ECU)发送Alive Check Request报文,以确认服务器是否仍然在线并能够响应请求。 -
保持会话活跃
在某些诊断协议中,会话可能会因为长时间无通信而超时关闭。通过定期发送Alive Check Request报文,可以防止会话超时,保持会话的活跃状态。 -
网络健康检查
通过发送Alive Check Request报文,可以检测网络通信是否正常,是否存在丢包或延迟等问题。
应用场景:
- 在长时间诊断过程中,定期发送Alive Check Request以保持会话。
- 在网络通信不稳定时,检测连接是否正常。
- 在测试或调试过程中,验证诊断通信的可靠性。
不携带DoIP数据,报文中只有DoIP报头。

4.2 Alive check request与Alive check response报文示例
前提:已经建立了TCP连接,测试仪再次发送路由激活请求的时候,DoIP实体才会发出在线检测请求报文。
- 情况1:
如下图日志,在第二次TCP连接后,发送路由激活请求后,DoIP实体发送负载类型为0x0007的在线检测报文,这里测试仪给了逻辑地址为0x0008的响应报文,并且Soure address参数为0E80,告诉DoIP实体,SA地址为0E80的诊断仪仍然在线。

- 情况2:
Doip实体发出在线检测报文后,诊断设备没有在超时时间(T_TCP_Alive_Check )内给出响应,Doip节点会主动断开TCP连接,并且给出路由激活肯定响应报文。
注意,TCP断开连接的端口是第一次TCP连接时的端口。

4.3 0x0008:Alive check response
诊断设备收到DoIP节点Alive check request报文后,发送Alive check response报文,数据中携带两字节的诊断设备逻辑地址:


此外,诊断设备也可以在没有收到请求报文的情况下向DoIP节点发送该响应报文,以通知DoIP节点诊断设备仍然在线,类似于CAN总线的3E 00/80报文。
5 总结
上个专题与本文对ISO 13400-2定义的所有节点管理报文的作用、帧结构以及示例进行了详细介绍。希望能对大家理解DOIP协议所有帮助!
相关文章:
车载以太网网络测试-20【传输层-DOIP协议-3】
1 摘要 本文继续对ISO 13400-2定义的节点管理报文进行介绍,主要对路由激活请求/响应报文以及在线检查请求/响应报文的作用、帧结构以及示例进行介绍。 上文回顾: 车载以太网网络测试-19【传输层-DOIP协议-2】 在进行详细介绍之前,还是先回顾…...
`chromadb` 是什么
chromadb 是什么 chromadb 是一个开源的向量数据库,它专门用于存储、索引和查询向量数据。在处理自然语言处理(NLP)、计算机视觉等领域的任务时,通常会将文本、图像等数据转换为向量表示,而 chromadb 可以高效地管理这些向量,帮助开发者快速找到与查询向量最相似的向量数…...
基于深度学习的运动想象脑电信号分类研究
标题:基于深度学习的运动想象脑电信号分类研究 内容:1.摘要 背景:运动想象脑电信号分类在康复医学、人机交互等领域具有重要应用价值,但传统方法在处理复杂脑电信号时存在一定局限性。目的:本研究旨在探索基于深度学习的方法对运动想象脑电信…...
HTML5 Video标签详细教程
HTML5 Video标签详细教程 简介 HTML5引入的<video>标签为网页提供了原生视频播放功能,无需依赖Flash等第三方插件。它使得在网页中嵌入和控制视频内容变得简单而强大。本教程将详细介绍<video>标签的使用方法、属性、事件以及相关技术。 基本用法 最…...
【Hbase】查看所有表
在 HBase 中,查看所有表时,通常不需要指定命名空间,除非有特殊需求或配置。以下是一些具体情况: 默认情况下 • HBase Shell:使用list命令时,默认会列出所有命名空间中的所有表,而不仅仅是默认…...
Java 分布式高并发重试方案及实现
文章目录 Java 分布式高并发重试方案及实现一、重试机制的背景和意义二、基于 Spring Boot 的重试方案实现1. 使用 Spring Retry 实现重试机制添加依赖开启重试功能定义重试逻辑使用重试服务 2. 使用 Fast-Retry 实现高性能重试引入依赖编程式重试注解式重试 三、重试机制的注意…...
Spring Boot 集成 Quartz 实现定时任务(Cron 表达式示例)
Spring Boot 集成 Quartz 实现定时任务(Cron 表达式示例) 前言1. 添加 Quartz 依赖2. 创建 Quartz 任务3. 配置 Quartz 任务调度4. 启动 Spring Boot 观察定时任务执行5. Quartz Cron 表达式详解6. 结论 前言 在 Spring Boot 项目中,我们经常…...
关于“碰一碰发视频”系统的技术开发文档框架
以下是关于“碰一碰发视频”系统的技术开发文档框架,涵盖核心功能、技术选型、开发流程和关键模块设计,帮助您快速搭建一站式解决方案 --- 随着短视频平台的兴起,用户的创作与分享需求日益增长。而如何让视频分享更加便捷、有趣,…...
vue3之写一个aichat---已聊天组件部分功能
渲染聊天数据 这个不必多说,直接从stores/chat中取出聊天列表数据渲染就好,因为前面添加的消息都是按照用户消息、AI助手消息这样添加的,效果如图 但是需要注意每条助手消息的状态,需要根据状态显示不同的图标或不显示图标&…...
ffmpeg+ubuntu编译库(完整版本)
个人使用环境: ubuntu desktop 16.04 + ffmpeg 4.2.1创建目录在home目录下创建 ffmpeg_sources:用于下载源文件 ffmpeg_build: 存储编译后的库文件 bin:存储二进制文件(ffmpeg,ffplay,ffprobe,X264,X265等) mkdir ffmpeg_sources ffmpeg_build bin安装依赖 先执行…...
基于STC89C51的太阳自动跟踪系统的设计与实现—单片机控制步进电机实现太阳跟踪控制(仿真+程序+原理图+PCB+文档)
摘 要 随着我国经济的飞速发展,促使各种能源使用入不敷出,尤其是最主要的能源,煤炭石油资源不断消耗与短缺,因此人类寻找其他替代能源的脚步正在加快。而太阳能则具有无污染﹑可再生﹑储量大等优点,且分布范围广&…...
第五: redis 安装 / find 查找目录
redis 安装的 两种方式: mac上安装redis的两种方法_如何在mac上安装redis-CSDN博客 首先可以先看一下brew的常用命令如下: brew search ** //查找某个软件包 brew list //列出已经安装的软件的包 brew install ** //安装某个软件包,默认安装的是…...
c++--vector
1.定义vector vector的定义分为四种 (1)vector() ——————无参构造 (2)vector(size_t n,const value_type& val value_type()) ——————构造并初始化n个val (3)vector(const vector& v1) ———————拷贝构造 (4)vector(inputiterator first,inpu…...
Springboot 项目如何输出优雅的日志
我们先看效果图: 我个人比较喜欢这种格式的日志输出,对其完整; 这种格式其实就是默认的,不需要大家配置任何的 logback-spring 文件和xml中配置日志level 没有做任何多余的配置;...
Linux——进程(5)进程地址空间
先看一个程序和现象 预期现象是,子进程和父进程相互独立,子进程的gval是100,101,102....而父进程一直都是100. 结果我们并不意外,只是我们发现,父子进程的gval的地址是一样的,这有点颠覆我们的认…...
代码随想录_动态规划
代码随想录 动态规划 509.斐波那契数 509. 斐波那契数 斐波那契数 (通常用 F(n) 表示)形成的序列称为 斐波那契数列 。该数列由 0 和 1 开始,后面的每一项数字都是前面两项数字的和。也就是: F(0) 0,F(1) 1 F(n…...
c库、POSIX库、C++库、boost库之间的区别和联系
文章目录 一、区别1. 定义和来源2. 功能范围3. 可移植性4. 语言支持5. 维护和更新 二、联系1. 相互补充2. 部分功能重叠3. 共同促进编程发展4. 代码兼容性 三、总结 一、区别 1. 定义和来源 C 库函数:由 ANSI C 和 ISO C 标准定义,是 C 语言编程的基础…...
Maven常见问题汇总
Maven刷新,本地仓库无法更新 现象 This failure was cached in the local repository and resolution is not reattempted until the update interval of aliyunmaven has elapsed or updates are forced原因 因为上一次尝试下载,发现对应的仓库没有这个maven配置…...
星越L_陡坡缓降使用讲解
目录 1.陡坡缓降 1.陡坡缓降 中控屏下滑-点击陡坡缓降功能 35km/h以下时生效。35km/h-60km/h该功能暂停 60km/h以上该功能关闭...
XSS跨站脚本攻击漏洞(Cross Site Scripting)
前提概要 本文章主要用于分享XSS跨站脚本攻击漏洞基础学习,以下是对XSS跨站脚本攻击漏洞的一些个人解析,请大家结合参考其他文章中的相关信息进行归纳和补充。 XSS跨站脚本攻击漏洞描述 跨站脚本攻击(XSS)漏洞是一种常见且危害较…...
html5基于Canvas的经典打砖块游戏开发实践
基于Canvas的经典打砖块游戏开发实践 这里写目录标题 基于Canvas的经典打砖块游戏开发实践项目介绍技术栈核心功能实现1. 游戏初始化2. 游戏对象设计3. 碰撞检测系统4. 动画系统5. 用户界面设计 性能优化1. 渲染优化2. 内存管理 项目亮点技术难点突破项目总结 项目介绍 在这个…...
企业信息化的“双螺旋”——IT治理和数据治理
企业信息化的“双螺旋”——IT治理和数据治理 一、核心定义二、关键差异三、内在联系四、实践挑战与融合路径五、行业案例参考六、结论数据治理(Data Governance)和IT治理(IT Governance)是现代企业数字化转型中的关键概念,二者既有紧密关联又各有侧重。以下从定义、核心内…...
设计模式之工厂模式的优缺点
工厂模式是一种创建对象的设计模式,它将对象的创建和使用分离。以下是工厂模式的优缺点: 优点 - 解耦对象的创建和使用:使得代码的依赖关系更加清晰,使用者不需要了解对象的具体创建过程,只需要关心如何使用对象&a…...
CCBCISCN复盘
AWDP – ccfrum 自己搭了一下环境, 复现一下这道题目, 之前比赛的时候完全没想到这个漏洞要怎么打, 修也不知道要怎么修, 就仅仅是对用户名的账号和密码进行了一下过滤, 完全没起到作用, 唉, 实在太菜 如果想要尝试复现的话可以尝试拉取这个镜像, 我打完之后就直接把这个容器给…...
糊涂人寄信——递推
思路分析:当有n封信,n个信封时。第k封信没有装在第k个信封里(k从1~n),就算所有的信封都装错了。我们可以得知的是,当有1封信,时,装错类别数为0。当有两封信时,装错类别为1。 当有三…...
OpenHarmony子系统开发 - 电源管理(一)
OpenHarmony子系统开发 - 电源管理(一) 一、电源模式定制开发指导 概述 简介 OpenHarmony默认提供了电源模式(如正常模式、性能模式、省电模式、超级省电模式)的特性。但由于不同产品的部件存在差异,导致在同样场景…...
使用 OpenCV 拼接进行图像处理对比:以形态学操作为例
图像处理在计算机视觉中起着至关重要的作用,而 OpenCV 作为一个强大的图像处理库,提供了丰富的函数来实现各类图像处理任务。形态学操作(Morphological Operations)是其中常用的技术,尤其适用于二值图像的处理。常见的…...
数据库的左连接,右连接,全外连接,自连接,内连接的区别
从语法层面上看, 全外连接full outer join 左连接是left outer join 右连接是right outer join 内连接是inner join 自连接是自身表与自身表进行的左右连接,需要注意的是并没有左内连接和右内连接。 左外连接 select * from A left outer join B …...
Nexus L2 L3基本配置
接口基本配置 N7K上所有端口默认处于shutdown状态; N5K上所有端口默认处于no shutdown状态(所有端口都是switchport) 默认所有接口都是三层route模式, 只有当线卡不支持三层的时候, 接口才会处于二层switchport模式 show run all | in “system default” 创建SVI口需要提前打…...
OpenHarmony 入门——ArkUI 跨页面数据同步和页面级UI状态存储LocalStorage小结(二)
文章大纲 引言一、在代码逻辑使用LocalStorage二、从UI内部使用LocalStorage三、LocalStorageProp和LocalStorage单向同步四、LocalStorageLink和LocalStorage双向同步五、兄弟组件之间同步状态变量七、将LocalStorage实例从UIAbility共享到一个或多个视图 引言 前面一篇文章主…...
