车载以太网网络测试-20【传输层-DOIP协议-3】

news2025/3/24 18:08:41

1 摘要

本文继续对ISO 13400-2定义的节点管理报文进行介绍,主要对路由激活请求/响应报文以及在线检查请求/响应报文的作用、帧结构以及示例进行介绍。
上文回顾:
车载以太网网络测试-19【传输层-DOIP协议-2】
在进行详细介绍之前,还是先回顾一下DOIP诊断通信流程的示意图,如下图:
原文链接:
车载网络测试-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 Type1激活类型,表示请求的路由激活类型
Reserved by this document4保留字段,通常为 0x00000000
Reserved for VM-specific use4保留字段,通常为 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报文的作用包括:

  1. 确认激活请求:当诊断工具发送Routing activation request报文请求激活某个通信通道时,车辆中的DoIP实体(如ECU)会通过Routing activation response报文来确认该请求是否成功。

  2. 返回激活状态:Routing activation response报文中包含一个状态码,用于指示激活请求的结果。例如,状态码可以表示成功激活、激活失败或激活被拒绝等。

  3. 提供附加信息:除了状态码外,Routing activation response报文还可能包含其他相关信息,如激活的通信通道的详细信息或错误描述。

  4. 确保通信准备就绪:通过发送Routing activation response报文,车辆中的DoIP实体通知诊断工具通信通道已准备好进行后续的诊断数据传输。

总结来说,Routing activation response报文的主要作用是确认诊断请求的激活状态,并确保诊断工具和车辆之间的通信通道已成功建立,为后续的诊断数据传输做好准备。

3.2 Routing activation response报文帧结构

路由激活响应报文主要是对上面路由激活请求报文的响应,的数据格式如下:
在这里插入图片描述
响应中的参数定义如下:

  1. 诊断设备逻辑地址(Logical address of the external test equipment):诊断仪的逻辑地址。
  2. DoIP节点逻辑地址(Logical address of the responding DoIP entity):DoIP节点物理逻辑地址。

在这里插入图片描述
ISO 13400-2 是诊断通信标准的一部分,主要涉及基于IP的诊断通信(DoIP,Diagnostics over Internet Protocol)。在DoIP协议中,路由激活响应码(Routing Activation Response Code)是一个关键参数,用于指示路由激活请求的处理结果。

  1. 路由激活响应码(Routing activation response code):1字节,它由DoIP实体(如车辆中的DoIP网关或ECU)发送,以告知请求方(如诊断工具)路由激活请求的处理状态。它确保了诊断通信的可靠性和高效性,并提供了明确的错误处理机制。通过理解和使用路由激活响应码,诊断工具可以更好地管理与车辆ECU的通信。比如:用来表示TCP连接建立是否成功,以及不成功的原因。
    定义如下表所示,Required Action栏展示了DoIP节点在返回响应后应该采取的操作。
    在这里插入图片描述
  2. 其余字段为预留或自定义字段,不常用。

3.3 常见Routing activation response code示例

  1. 路由激活成功(10)
    在这里插入图片描述
  2. 不支持的SA地址(0x00)
    如下图, 0x0101是DoIP实体不支持的SA地址,所以DoIP实体响应了0x00 状态码。
    在这里插入图片描述
  3. 已经激活的TCP连接上使用不同的SA地址(0x02)
    如下图,在已经激活的TCP连接上,使用了不同的SA地主,DoIP实体报0x02状态码
    在这里插入图片描述
  4. 不同的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报文作用

  1. 检测连接状态
    客户端(如诊断工具)向服务器(如车辆ECU)发送Alive Check Request报文,以确认服务器是否仍然在线并能够响应请求。

  2. 保持会话活跃
    在某些诊断协议中,会话可能会因为长时间无通信而超时关闭。通过定期发送Alive Check Request报文,可以防止会话超时,保持会话的活跃状态。

  3. 网络健康检查
    通过发送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协议所有帮助!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/2319754.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

`chromadb` 是什么

chromadb 是什么 chromadb 是一个开源的向量数据库,它专门用于存储、索引和查询向量数据。在处理自然语言处理(NLP)、计算机视觉等领域的任务时,通常会将文本、图像等数据转换为向量表示,而 chromadb 可以高效地管理这些向量,帮助开发者快速找到与查询向量最相似的向量数…

关于“碰一碰发视频”系统的技术开发文档框架

以下是关于“碰一碰发视频”系统的技术开发文档框架,涵盖核心功能、技术选型、开发流程和关键模块设计,帮助您快速搭建一站式解决方案 --- 随着短视频平台的兴起,用户的创作与分享需求日益增长。而如何让视频分享更加便捷、有趣&#xff0c…

vue3之写一个aichat---已聊天组件部分功能

渲染聊天数据 这个不必多说,直接从stores/chat中取出聊天列表数据渲染就好,因为前面添加的消息都是按照用户消息、AI助手消息这样添加的,效果如图 但是需要注意每条助手消息的状态,需要根据状态显示不同的图标或不显示图标&…

基于STC89C51的太阳自动跟踪系统的设计与实现—单片机控制步进电机实现太阳跟踪控制(仿真+程序+原理图+PCB+文档)

摘 要 随着我国经济的飞速发展,促使各种能源使用入不敷出,尤其是最主要的能源,煤炭石油资源不断消耗与短缺,因此人类寻找其他替代能源的脚步正在加快。而太阳能则具有无污染﹑可再生﹑储量大等优点,且分布范围广&…

第五: redis 安装 / find 查找目录

redis 安装的 两种方式: mac上安装redis的两种方法_如何在mac上安装redis-CSDN博客 首先可以先看一下brew的常用命令如下: brew search ** //查找某个软件包 brew list //列出已经安装的软件的包 brew install ** //安装某个软件包,默认安装的是…

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…

星越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)是现代企业数字化转型中的关键概念,二者既有紧密关联又各有侧重。以下从定义、核心内…

CCBCISCN复盘

AWDP – ccfrum 自己搭了一下环境, 复现一下这道题目, 之前比赛的时候完全没想到这个漏洞要怎么打, 修也不知道要怎么修, 就仅仅是对用户名的账号和密码进行了一下过滤, 完全没起到作用, 唉, 实在太菜 如果想要尝试复现的话可以尝试拉取这个镜像, 我打完之后就直接把这个容器给…

糊涂人寄信——递推

思路分析:当有n封信,n个信封时。第k封信没有装在第k个信封里(k从1~n),就算所有的信封都装错了。我们可以得知的是,当有1封信,时,装错类别数为0。当有两封信时,装错类别为1。 当有三…

使用 OpenCV 拼接进行图像处理对比:以形态学操作为例

图像处理在计算机视觉中起着至关重要的作用,而 OpenCV 作为一个强大的图像处理库,提供了丰富的函数来实现各类图像处理任务。形态学操作(Morphological Operations)是其中常用的技术,尤其适用于二值图像的处理。常见的…

OpenHarmony 入门——ArkUI 跨页面数据同步和页面级UI状态存储LocalStorage小结(二)

文章大纲 引言一、在代码逻辑使用LocalStorage二、从UI内部使用LocalStorage三、LocalStorageProp和LocalStorage单向同步四、LocalStorageLink和LocalStorage双向同步五、兄弟组件之间同步状态变量七、将LocalStorage实例从UIAbility共享到一个或多个视图 引言 前面一篇文章主…

Python数据可视化实战:从基础图表到高级分析

Python数据可视化实战:从基础图表到高级分析 数据可视化是数据分析的重要环节,通过直观的图表可以快速洞察数据规律。本文将通过5个实际案例,手把手教你使用Python的Matplotlib库完成各类数据可视化任务,涵盖条形图、堆积面积图、…

在 Elasticsearch 中扩展后期交互模型 - 第 2 部分 - 8.18

作者:来自 Elastic Peter Straer 及 Benjamin Trent 本文探讨了如何优化后期交互向量,以适应大规模生产工作负载,例如减少磁盘空间占用和提高计算效率。 在之前关于 ColPali 的博客中,我们探讨了如何使用 Elasticsearch 创建视觉搜…

蓝桥每日打卡--区间移位

#蓝桥#JAVA#区间移位 题目描述 数轴上有n个闭区间:D1,⋯Dn。 其中区间Di用一对整数[ai,bi]来描述,满足 ai≤bi。 已知这些区间的长度之和至少有。 所以,通过适当的移动这些区间,你总可以使得他们的"并"覆盖 [0,],也…

CUDAOpenCV 基于Hessian矩阵计算特征值

文章目录 一、简介二、实现代码三、实现效果一、简介 基于之前的博客:CUDA&OpenCV Hessain矩阵计算,我们可以计算出每个像素的特征值: 二、实现代码 ComputeHessainMatrix.cuh #ifndef HESSAIN_GPU_CUH #