DoIP协议概述

news2024/11/24 16:53:58

大家好哈,我是穿拖鞋的汉子!

伴随着需求不断提升(车身数据传输速率和带宽需求),为了满足需求将以太网引进到车载网络中。车载以太网在诊断传输层的应用协议是ISO 13400(Diagnostic On IP—DoIP),定义的是从物理层到应用层搭建通信桥梁的规则。

该公众号以往关于DoIP文章如下:

 

上述文章自己总结的都是偏向具备内容,针对的是在基于车载以太网进行诊断通信,搭建通信桥梁的整个过程(对于DoIP可以理解为DoIP是搭建通信桥梁的规则)。

今天自己想基于ISO 13400协议总结下偏系统的概述性的内容,以方便后续自己查阅。

一、基于车载以太网的诊断系统分析

首先如下图,ISO 13400协议开篇示意图:

1、物理层

在该层需要定义是物理电气特性:

  • 需要选定车载总线类型:-Tx、-T1、BroadR-Reach,具体选定那种总线类型,需要参看各家车规芯片、接口特性;

  • Software、Hardware工程师根据不同类型定义驱动;

  • 基于诊断范畴需求参看IEEE 802.3(国际上定义无线通信的协议簇)、ISO 13400-3定义以太网在车身做诊断接口参数(比如激活线特性);

上述内容可以在如上图OSI七层模型清晰看到(对应协议名称)。

2、传输层

在车载诊断范畴,传输层中应用的协议是ISO 13400。

该协议的目的是建立物理层到应用层的通信桥梁,该规则可以保证诊断通信链路的稳定和安全。

DoIP是Diagnostic on IP,相当于诊断在车载以太网的应用。

报文传输的载体还是传统互联网的TCP/UDP/IP协议(这些协议1980年就已经提出,经历了时间和市场的考验),DoIP协议就是定义一系列规则,使用不同的帧类型(在协议中,通过Payload Type)来搭建通信流程

A:车辆连接;

B:车辆声明;

C:Routing激活(Socket激活);

D:诊断通信。

具体内容可参看开篇具体文章。

3、会话层

在ISO 14229-2中定义了诊断范畴需要用到的时间参数:

具体可参看如下截图:

该ISO 14229子类中定义了诊断过程中相应的时间参数(P2、P2*、S3等)

通过示意图,详细直观说明了时间参数在诊断过程中的定义。

4、应用层

应用层是实现诊断功能(OSI七层模型),具体的诊断功能如下所示:

  • Service

  • DID

  • DTC

都是在此层实现,对应的协议是ISO 14229-1。

因为此时诊断报文是基于车载以太网传输,所以需要查看ISO 14229-5(该文是UDS协议在在车载以太网上的具体应用和具体限制),因为UDS在不同的车载总线应用是不同的,因此通过不同的子类(子类-3到-7,对应不同的车载总线)加以说明。

二、车载以太网典型网络拓扑

由于车载以太网有很好的网络延展性,可以点对点,也可以应用交换机等策略实现良好的车载网络拓扑。

考虑到车载以太网后续会有远程无线应用,在ISO 13400中给出了如下网络拓扑示意图:

1、边缘节点

在ISO 13400协议中只有边缘节点可以连接外部Tester(严格按照ISO协议的话)。并且车身内部节点定义时会有逻辑地址,这样的话,Tester只知道车内节点的逻辑地址,Tester将该请求发送至GW时,GW内部有逻辑地址和真实地址的Map关系表,这样可以有效的保护车内节点数据安全。

只有GW可以解析逻辑地址和真实地址之间的关系,这样虽然可以有效的保护数据安全,但是也造成了GW很大的负荷,会形成通信“堵塞”现象。

所以现在也有用户有如下策略:

让Tester经过安全认证,GW充当路由功能,Tester直接根据真实地址直接跟ECU进行通信(GW无脑转发)。

三、车载以太网诊断通信流程

最新版 ISO 13400协议将信息安全因素考虑进去,在整个通信桥梁搭建过程中增加了TLS(Transport Layer Security),具体通信流程如下图:

1、通信连接

在ISO 13400协议中关于车辆边缘节点IP地址有两种方式:

(1)、DHCP;

(2)、Auto-IP;

并且前者优先级比后者高。

但考虑到现阶段整车数量,多数OEM采用是静态IP地址(IPV4偏多)。

2、车辆声明

车辆将自身的识别信息以广播形式自发三次(上电后)于所在网络,Tester若未获取,进行通信前可进行车辆信息请求.

PS:需要注意的是这个过程有许多时间参数需要注意,后续我会以文章形式整理出来。

3、Routing激活

以DoIP Payload Type 0005/0006来激活车载以太网诊断通信套接字(Socket),也就是TCP进行三次握手连接后,执行该动作,激活诊断通信功能。

4、诊断通信

此时Tester会发送DoIP Payload Type 8001的诊断请求进行诊断通信,边缘节点接受到请求后会回复DoIP Payload Type 8002的ACK,告知Tester收到诊断请求,与此同时会发送诊断请求给车内具体节点。车内节点收到后会给予诊断相应(此时DoIP Payload Type 8001)。

PS:若边缘节点判定Tester发送的诊断请求有无效信息时:

A:无效目标地址;

B:报文超长;

等等,此时边缘节点会回复DoIP Payload Type 8003的NACK。

具体判定机制可参看文章开头文章。

PS:车内节点之间通信可不用严格按照DoIP协议定义流程(俗称阉割版DoIP协议)。

愿你我相信时间的力量,

做一个长期主义者!

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

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

相关文章

模型实战(1)之YOLOv5 实现目标检测+训练自己的数据集

模型实战(1)之YOLOv5 实现目标检测训练自己的数据集 写一个小总结吧,关于yolov5使用可以参考我的两外两篇博文: 1.YOLOV5算法一之Windows10下yolov5安装测试并训练自己的数据集 2.YOLOV5算法二之数据集转换及自动划分训练集与测试…

代理模式之提出问题和代理模式的概念

代理模式之提出问题和代理模式的概念 1. 提出问题 ①现有代码缺陷 针对带日志功能的实现类,我们发现有如下缺陷: 对核心业务功能有干扰,导致程序员在开发核心业务功能时分散了精力 附加功能分散在各个业务功能方法中,不利于统一…

docker创建带有用户密码认证和web可视化界面的私有仓库

docker-registry的搭建 有时候使用Docker Hub这样的公共仓库可能不方便,用户可以创建一个本地仓库供私人使用。比如,基于公司内部项目构建的镜像。 docker-registry是官方提供的工具,可以用于构建私有的镜像仓库。 安装运行docker-registry…

Go语言设计与实现 -- 上下文

我们先来看一下context.Context的接口: // A Context carries a deadline, a cancellation signal, and other values across // API boundaries. // // Contexts methods may be called by multiple goroutines simultaneously. type Context interface {// Deadl…

【TypeScript】TS接口类型(三)

🐱个人主页:不叫猫先生 🙋‍♂️作者简介:前端领域新星创作者、华为云享专家、阿里云专家博主,专注于前端各领域技术,共同学习共同进步,一起加油呀! 💫系列专栏&#xff…

modnet:real-time trimap-free portrail matting via objective decomposition

目前抠图(Image Matting)的主流算法有哪些? - 知乎什么是抠图对于一张图I, 我们感兴趣的人像部分称为前景F,其余部分为背景B,则图像I可以视为F与B的加权…https://www.zhihu.com/question/68146993/answer/…

SpringCloud-Gateway配置及持久化、过滤器、异常处理

文章目录yml配置代码配置持久化数据结构predicates(断言) 和filters&#xff08;过滤&#xff09;新增配置说明相关接口全局过滤器局部过滤器全局异常处理gateway不能和web一起使用 需要排除掉<dependency><groupId>org.springframework.cloud</groupId><…

【Unity】Delegate, Event, UnityEvent, Action, UnityAction, Func 傻傻分不清

【Unity】Delegate, Event, UnityEvent, Action, UnityAction, Func 傻傻分不清Delegate 委托&#xff0c;函数指针一个简单的例子&#xff1a;一对一依赖一个简单的例子&#xff1a;一对多依赖所以话说……委托有啥用呢&#xff1f;事件 Event&#xff0c;特殊的委托UnityEven…

Failed to read artifact descriptor for XXX.jar错误分析

今天遇到极其恶心的坑&#xff0c;自己定义编写的工具类&#xff0c;之前使用一直没有问题&#xff0c;正常引入pom文件中&#xff0c;也能正常的使用工具类中自建类。今天就是无法导入包&#xff0c;报错信息如下。 Failed to read artifact descriptor for com.yuxuntoo.www…

JavaScript篇.day03-循环结构(while, for)

目录 1.循环结构 2.例题 (1)奇数乘积(while/do-while) (2)水仙花数(while) (3)最大公约数(for) (4)最小公倍数(for) (5)打印星星(for) (6)乘法表(for) 1.循环结构 循环结构在程序中可执行多次循环结构有while循环, do-while循环, for循环 名称执行顺序循环执行次数应用…

wireshark练习抓取网络数据包用C编程完成modbus协议,从云端服务器读取温湿度数据。

文章目录前言一、疯狂聊天室1、配置网络2、创建房间3、互发消息二、wireshark抓取网络数据包1.找到对应的包2、分析抓取包中的信息三、Modbus协议概述1、Modbus主/从协议原理2、通用Modbus帧结构---协议数据单元(PDU)3、两种Modbus串行传输模式4、ModbusTCP通信结构四、C编程完…

零基础自学网络安全,如何3个月快速入门?

说到自学网络安全这一块&#xff0c;我来给大家分享一下我的经验。 一、了解相关网站 在入这行之前&#xff0c;我是先泡了一段时间网络安全相关的论坛&#xff0c;了解行业的信息&#xff0c;也可以确认自己是否真的想做这一行&#xff0c;毕竟这一行看起来很炫酷&#xff0…

Python编程 内置文件中常用方法

作者简介&#xff1a;一名在校计算机学生、每天分享Python的学习经验、和学习笔记。 座右铭&#xff1a;低头赶路&#xff0c;敬事如仪 个人主页&#xff1a;网络豆的主页​​​​​​ 目录 前言 一.函数 &#xff08;1&#xff09;range() &#xff08;2&#xff09;zi…

做自动化测试3年,薪资为何会被应届生倒挂?

各位职场人都听说过薪资倒挂这词儿吧&#xff0c;这个情况在行业内早就不是什么稀罕事了&#xff0c;我有一个认识的&#xff0c;作为公司3年工龄的软件测试老员工&#xff0c;技术过关&#xff0c;能够独立工作&#xff0c;并且思考优化方向&#xff0c;我不吹牛的说&#xff…

【STL学习之路】vector的使用

文章目录vector介绍vector使用一、构造函数二、迭代器三、vector增删查改关于STL中参数的分析&#xff08;以push_back为例&#xff09;sort算法和仿函数使用vector介绍 vector就是顺序表的封装&#xff0c;是一个模板类&#xff0c;如上图所示。为方便vector里可以存任何数据类…

ChatGPT 免账号使用

一.ChatGPT 简介 ChatGPT是人工智能研究实验室OpenAI新推出的一种人工智能技术驱动的自然语言处理工具&#xff0c;使用了Transformer神经网络架构&#xff0c;也是GPT-3.5架构&#xff0c;这是一种用于处理序列数据的模型&#xff0c;拥有语言理解和文本生成能力&#xff0c;尤…

搭建资金运营体系提高企业的运营能力

资金运营体系是以项目资金流管理为核心&#xff0c;在项目预核算体系基础上的深度化&#xff0c;是丰富和完善全面预算管理的重要内容。资金运营体系建设嵌入到业务流程和项目实施过程&#xff0c;将资金使用成本贯穿于项目实施各个环节。 一、资金管控总体思路 1、资金运营的…

数据可视化:春节临近,拥堵模式开启,你买好回家的车票了吗

哈喽&#xff0c;大家好&#xff0c;春节将近&#xff0c;想必大家也开始准备回家过年的事情了&#xff0c;春运即将开始&#xff0c;祝愿大家都能买到回家的车票。 想必大家对春运都不陌生&#xff0c;随着春节临近&#xff0c;全国各地也都先后开启了拥堵模式&#xff0c;下…

unity打android studio项目包运行时报错

Deprecated Gradle features were used in this build, making it incompatible with Gradle 8.0. 打开Cmd 进入打包的项目&#xff0c;如下 输入gradlew --warning-mode all 说的是在Build.gradle(project)的RepositoryHandler.jcenter()方法已弃用 改成mavenCentral()即可 …

【OpenCV-Python】教程:8-3 高动态范围 HDR

OpenCV Python HDR 【目标】 学习如何从曝光序列生成和显示HDR图像。使用曝光融合来合并曝光序列。 【理论】 高动态范围成像(HDRI或HDR)是一种用于成像和摄影的技术&#xff0c;用于再现比标准数字成像或摄影技术更大的动态范围的光度。虽然人眼可以适应广泛的光照条件&am…