UDS诊断作为汽车ECU里的一个服务功能,位于应用层,它的实现需要有网络的支撑,我们把基于CAN总线实现的UDS诊断称为DoCAN,基于Ethernet实现的UDS诊断称为DoIP

DoIP

DoIP

Diagnostic communication over Internet Protocol,我们把通过以太网协议,承载UDS数据,实现诊断通信的这种方式称为DoIP

DoIP的好处有哪些呢?

相比DoCAN中CAN网络的封闭性,DoIP由于Ethernet的互联互通,可以实现车与车、车与人的远距离诊断通信

DoIP在传输层以下的规范遵循ISO 13400,而应用层还是遵循ISO 14229不变,这样可以保证UDS诊断在不同车载网络上的可移植性

ISO 13400-2规定了外部测试设备与车辆ECU之间的诊断通信要求,包括:

  • 网络层协议IP
  • 传输层协议TCP/UDP
  • 对网关的要求(网关如何集成到现有网络总)
  • 对测试设备的要求(如何发现车辆并建立通信)

支持DoIP的车辆网络架构图如下

从这张图上可以看出:汽车内部必须有一个DoIP的总网关,它作为和外部的诊断设备DoIP通信的唯一接口


网络层要求

MAC层

没什么可说的,和标准的以太网物理链路层一样,都是基于IEEE 802.3

网络层

和标准以太网网络层一样,但是需要注意的一点是,DoIP在以太网IP层首先IPv6协议,同时兼容IPv4

传输层

TCP

除了遵循TCP协议的标准规范外,DoIP在TCP协议上还应遵守:

  • 支持DoIP的ECU的诊断服务创建的socket必须监听在端口号13400上,外部测试设备通过连接此端口建立连接
  • 每个支持DoIP的ECU必须支持n+1个并发的TCP socket连接,这是为了防止有多个外部测试设备同时和ECU进行诊断通信
  • 外部测试设备创建的socket应选择本地端口,本地端口即系统随机的端口

TCP连接的过程

UDP

UDP协议在DoIP中的作用和使用的端口号为:

车辆发现的两种方式:

  • DoIP设备启动后,通过UDP向13400端口广播发送vehicle announcement message,源端口号为13400或随机,里面包含此DoIP设备的基本信息,外部测试设备需要监听13400来接收这些信息
  • 外部测试设备通过UDP广播发送request消息,目标端口号是13400,DoIP设备监听在13400端口,接收此request并响应

DoIP Protocol

DoIP报文的结构

DoIP Header

  • 其中Inverse Protocol Version是对Protocol Version的依比特取反
  • 而Payload Type则是表示这个DoIP报文的用途

Payload Type


其中最常用的几个:

  • 0x0001和0x0004用于汽车诊断连接建立之前的车辆发现过程
  • 0x0005和0x0006用于tcp socket连接成功后的诊断连接请求与响应
  • 0x8001、0x8002、0x8003分别表示诊断消息、诊断消息正响应、诊断消息负响应
  • 0x0007和0x0008用于检查建立的诊断连接是否仍然在使用中,如果不再使用,则关闭socket

从中可以看出DoIP诊断通信前需要做的事:

  • 车辆发现,有两种方式
  • DoIP设备启动后,首先通过UDP广播的形式把一条DoIP报文(vehicle announcement message,Payload Type为0x0004)发给网络上的所有的其他节点,其中就包括诊断仪,目的端口是13400,其中这条消息携带了DoIP设备的DoIP版本、VIN、logical address等信息,这条信息会发送三次,而之前监听在13400端口的诊断仪接收到这条信息,就知道了DoIP设备的基本信息
  • 如果诊断仪没有收到,还有一种办法,就是诊断仪这边主动请求,通过UDP广播的形式,主动发一条DoIP request消息(Payload Type为0x0001),目的端口号是13400,而之前启动后就一直监听在13400的DoIP设备,接收到这条消息后,就会回复一条携带自己信息的response给诊断仪
  • 建立TCP连接

诊断仪通过创建tcp socket,然后调用connect方法向DoIP设备发起TCP连接请求(目的ip是DoIP设备ip,目的端口号是13400),而DoIP设备在启动前已经通过创建tcp socket监听在13400端口,接收到tcp连接请求后就会完成三次握手

  • 建立诊断连接

在TCP连接建立后,诊断仪还需要发送一条Routing activation request的DoIP报文给DoIP设备,DoIP设备收到后会回复一条Routing activation response的DoIP报文,此时诊断连接建立,双方可以诊断通信


网关

汽车网络中由于同时存在多种网络,而造成不同网络上的诊断功能无法互相通信,这时候就需要网关的作用

比如说:
对于DoCAN和DoIP,网关起到的作用就是接收、解封装、封装、发送
DoCAN报文需要发给DoIP设备,网关会先把DoCAN的CAN网络头部剥离,留下UDS数据,然后再用这个UDS数据封装一条完整的DoIP报文,发出去
DoIP报文需要发给DoCAN设备,网关会先把DoIP的所有头部剥离,留下UDS数据,然后用这个UDS数据封装一条完整的DoCAN报文,发出去


一文了解什么是DoIP协议(超详细)相关推荐

  1. 让别人和自己看懂自己的程序代码?一文掌握Java单行多行、文档注释以及注解(Annotation)超详细的理解使用,IDEA注释注解快捷键和模板,提高程序代码更有可读性

    文章目录 单行和多行注释 文档注释(Java特有) Annotation(注解)的理解 常见的Annotation示例 IDEA注释注解快捷键及模板 自定义 Annotation JDK 中的元注解 ...

  2. flag push tcp 作用_TCP协议超详细解析及攻击/防范

    TCP 协议作用 TCP 协议使用的是面向连接的方法进行通信的,其作用如下: 面向流的处理:TCP 以流的方式处理数据.换句话说,TCP 可以一个字节一个字节地接收数据,而不是一次接收一个预订格式的数 ...

  3. 【1错笔记】psd面试——最长回文子序列 动态规划(2000字超详细解题)

    题目: 链接:https://ac.nowcoder.com/acm/contest/90/D 来源:牛客网 题目描述 掌握未来命运的女神 psd 师兄在拿了朝田诗乃的 buff 后决定去实习. 埃森 ...

  4. vue3 - 网页在线预览 office word 文档,打开 .doc / .docx 文件显示并解析文档内容功能效果(超详细示例功能源码,复制粘贴后开箱即用)

    效果图 本博客实现了在 vue3 项目中,实现预览 word 文档功能示例,打开后缀名为 .doc / .docx 的文件进行显示解析, 如下图真实运行所示,兼容任意浏览器,你可以一键复制示例源码稍微 ...

  5. Nginx配置https协议 超详细!!!

    本文章基于Linux操作系统演示. 准备工作:有公网IP的服务器(CentOS7).申请一个域名.为域名申请SSL证书.将服务器的公网IP和域名进行绑定. 一.下载安装Nginx Nginx下载网址: ...

  6. linux 修改时区_【003】一文全面掌握Linux初始化进程(超详细)

    总第79篇 本文将详细梳理Linux系统的初始化进程systemd .通过对此进程的理解,你将对系统的初始化有一个深入的理解,从而更好地理解其它的操作. Linux系统的开机过程是这样的:从BIOS开 ...

  7. r library car_基础方法 | 用R语言完成量化论文全流程示例!附超详细R脚本

    基础方法 ♪ Method R语言的优点 对于有一定数据分析基础的朋友们来说,要入门R语言并不是十分困难的.但是这毕竟是一门专业性很强的技术,我们当然希望投入精力掌握R语言之后能够得到相应的回报. 在 ...

  8. 详解ISO 13400文档(DoIP协议)-1

    通过浏览别人的文章,虽然能快速了解自己完全不懂的协议,但是很多细节和知识点,还是应该通过学习ISO协议规范文档,对它们有更深入更全面的理解,下面我们就通过ISO 13400,全面深入地学习DoIP协议 ...

  9. DoIP协议从入门到精通系列——DoIP协议时间参数

    记录一些文字,期盼能够留下时间的印记,在年终复盘有记录可查.按照习惯,分享一段喜欢的文字,避免自己成为高知识低文化的工程师: " 人只有知道自己无知后,才能从骨子里谦和起来,不再恃才傲物,不 ...

  10. SpringCloud从入门到精通(超详细文档二)

    上一篇文档(SpringCloud从入门到精通之超详细文档一)已经对Springboot/SpringCloud做了简单的介绍以及应用讲解,下面将继续为大家介绍SpringCloud后续应用. 第12 ...

最新文章

  1. Valgrind使用【转】
  2. 路由在express中的实践
  3. 触发器——创建||更新||删除||查看
  4. 八十四、SpringBoot微服务Dubbo和Zookeeper分布式
  5. 940mx黑苹果驱动_专业黑苹果系统安装 win macos双系统10.13/14/15
  6. 【面试】 C++ 面试题笔记(不定期更新)
  7. maven构建可执行jar包
  8. rbac模型的特点和优势_权限体系设计:融合了组织和岗位的权限模型长啥样?...
  9. 【Spring Cloud】网关 - Zuul(1.x)
  10. android sdk 转移_腾讯微博java(android)sdk关系链api详细介绍
  11. SIM868使用笔记
  12. FFmpeg硬件加速
  13. QQ和MSN 在线代码
  14. 雅猴的脚印——2019年下半年
  15. 快速了解vue前端框架
  16. HEVC编码技术简介
  17. esp8266解析php,ESP8266 Bootloader开源代码解析之rboot(一)
  18. IDEA如何简单的设置中文
  19. work english words
  20. java版VR全景漫游制作平台 - 1介绍

热门文章

  1. Bulk insert远程服务器导入sqlserver
  2. 很全的C51库函数(IIC类)(IIC、EEPROM、ADXL、PCF、HMC、L3G、BMP)
  3. vuxui 安装使用,解决npm项目文件严重问题提示
  4. sparc架构代码分析-setup_arch函数分析
  5. axure删除的页面怎么恢复_Axure高保真还原Web首页布局和交互教程
  6. 各省简称 拼音 缩写_全国所有城市拼音跟缩写.docx
  7. js实现城市名称拼音索引
  8. 坐标转换并导出KML文件
  9. SQL数据库基础知识复习
  10. C语言复习 -- 知识点总结(全)