目录

1. 数据链路层与物理层

2. 传输层与网络层

3. DoIP数据帧格式

3.1 帧格式说明

3.2 DoIP-协议版本

3.3 DoIP-Data Type

3.4 DoIP-Data length

4. 诊断连接

4.1 连接状态

4.2 建立连接和车辆发现

4.3 会话建立

5. 诊断发送

5.1 请求DID F810读取


1. 数据链路层与物理层

根据ISO-13400的要求,DoIP通信在物理层支持100BASE-TX (100 Mbit/s Ethernet) 和10BASE-T (10 Mbit/s Ethernet) 两种制式。

2. 传输层与网络层

DoIP设备的MAC地址也符合IEEE 802.3 的要求。

ISO-13400规定,DoIP通信在传输层上必须同时支持UDP和TCP,并将UDP和TCP的使用场合进行了定义,对所使用的端口号也进行了定义。

ISO-13400规定,DoIP通信在网络层上使用IPv6协议,但是为了后向兼容的原因,也支持IPv4。此外,对于IPv4来说,还要支持地址解析协议(ARP ),对于IPv6来说,还要支持邻居发现协议(NDP) ,这两个协议是用于在只知道IP地址的情况下获取MAC地址的。

ARP格式包

NDP数据包

可参考 https://blog.csdn.net/zhishenluo/article/details/103729512

3. DoIP数据帧格式

3.1 帧格式说明

以太网帧(具体参考网络帧)

IP段

TCP段

UDP段

DoIP段

3.2 DoIP-协议版本

0x00: reserved

0x01: DoIP ISO/DIS 13400-2:2010

0x02: DoIP ISO 13400-2:2012

0x03…0xFE: reserved by this part of ISO 13400

0xFF: default value for vehicle identifcation request messages

3.3 DoIP-Data Type

【0x0001至0x0004】用于汽车标识上报或请求,只能通过UDP报文来发送这种命令,主要用于在汽车和诊断仪进入网络之后、诊断连接建立之前的车辆发现过程。

【0x0005 和0x0006】标识的Routing activation request 和 response用于在socket建立之后,进行诊断通信的请求。

【0x0007和0x0008】用于Alive check,用于检查当前建立的诊断连接socket是否仍然在使用中,如果不再使用,则关闭socket释放资源。

0x8001,0x8002,0x8003】,分别代表的含义分别是诊断消息、诊断消息正响应和诊断消息负响应。

3.4 DoIP-Data length

就是标识后面的user data的长度。

此外源地址和目标地址可以参考UDS中定义即可,用户数据即为诊断相关服务数据。

4. 诊断连接

4.1 连接状态

DoIP实体内管理着一个DoIP connection table ,用来记录和维护诊断通信的逻辑连接。上图就是这个表中的一个元素,即一个逻辑连接的状态机。上图中的方框就是连接所处的状态,[Step]是状态之间跳转时发生的事情。

[Step1] 当一个新的套接字建立,逻辑连接的状态就从“listen”跳转到“socket initialized”,同时启动一个定时器, initial inactivity timer。

[Step2] 当DoIP实体接收到tester发来的一个routing activation信息后,逻辑连接的状态就从“socket initialized”跳转到“Registered [Pending for Authentication]” ,此时 initial inactivity timer被停止,启动一个名为general inactivity timer的定时器。

[Step3] 在完成Authentication之后,逻辑连接的状态就从“Registered [Pending for Authentication]”跳转到“Registered [Pending for Confrmation]” 。

[Step4] 在完成Confrmation之后,逻辑连接的状态就从“Registered [Pending for Confrmation]”跳转到“Registered [Routing Active] ” 。

[Step5] 如果initial timer 或general inactivity timer 过期后仍没收到后续请求,或者authentication 和 confrmation 被拒绝了,又或者外部测试设备对alive check 消息没有响应,则逻辑连接进入“Finalize”状态。

[Step6]进入Finalize后,此时TCP套接字将被关闭,并重新回到“listen”状态。

4.2 建立连接和车辆发现

当DoIP实体和外部测试设备都连接到一个网络中时,它们会利用DHCP协议获得一个属于自己的IP地址。在网络中,路由器作为DHCP server,为新加入到该网络中的设备分配IP地址。在获取IP地址之后,有两种车辆发现的方法,如上图所示。一种方法是车辆主动上报自己的信息3次。如果测试设备没有收到车辆主动上报的信息,则会发送一个identification request,如果网络中有车辆的话,车辆对这个请求进行响应,测试设备便发现了被测车辆。

4.3 会话建立

在诊断仪发现车辆之后,会把车辆添加到自己的车辆列表中。当用户选择这个列表中的某辆车,如果连接建立成功,用户就可以对车辆进行诊断了。

接下来用户给汽车发出诊断信息,网关会根据信息接收对象把诊断信息转发给网络中相关的ECU,当得到ECU 的响应之后,网关再把最终的响应发送给诊断仪。当用户选择退出时,用于DoIP通信的这个套接字就被关闭了。

5. 诊断发送

5.1 请求DID F810读取

byte 0:ISO13400 版本

byte 1:ISO13400 版本逐比特取反

byte 2~3:数据类型,0x8001,表明这是一个诊断信息的数据包

byte 4~7:数据长度,在这个例子中的值是7,表示后面有7个字节的数据

byte 8~9:源地址

byte 10~11:目的地址

byte 12~13:具体的诊断命令,SID是22,表示读取,DID是0xF810

其他诊断服务类似。

关于DoIP 协议的理解相关推荐

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

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

  2. AUTOSAR从入门到精通100讲(十)-DoIP协议介绍

    概述 所谓的DoIP其实就是基于以太网的通讯协议对UDS协议的数据进行传输,即Diagnostic communication over Internet Protocol.其本身也是一种协议,规范于 ...

  3. VRRP协议个人理解(RFC5798)+典型配置+RFC2338/RFC3768文档翻译

    本文档源地址位于RFC 2338: Virtual Router Redundancy Protocol,在此仅为个人学习加深理解使用.转载等操作请保留源文档版权声明. RFC2338存在更新RFC3 ...

  4. 关于GPL协议的理解(开源与商用、免费与收费)

     关于GPL协议的理解(开源与商用.免费与收费) 如果你使用并且修改了我的GPL软件,那么你的软件也必须要开源,否则就不能使用我的软件,你是否把你的软件商用和我没关系.比如,Oracle卖的不是软 ...

  5. DoIP专栏 - DoIP协议组成

    一. 概述 该小节主要介绍DoIP报文的接收方法及其协议格式,对协议格式的组成有所了解后,后续章节会对协议的解析及异常处理进行讲解. 二. 正文 2.1 端口号 从DoIP名字可以看出,该协议是在TC ...

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

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

  7. DoIP协议从入门到精通系列——车辆声明

    上篇文章对DoIP中物理连接做了说明和描述,介绍了以太网应用到车载网络中重要的两个组织: IEEE: OPEN联盟. 本文主要对物理连接后,车辆进行自属信息声明过程做一个完整描述. 一.基础信息 Do ...

  8. nrf52832 学习笔记(七)蓝牙协议层级理解

    nrf52832 学习笔记(七)蓝牙协议层级理解 本文主要由一下几篇文档摘录汇总而成 ,如有错误欢迎斧正 da14531 蓝牙协议文档 深入浅出低功耗蓝牙(BLE)协议栈 低功耗蓝牙ATT/GATT/ ...

  9. DoIP协议源码 车载以太网诊断协议ISO13400协议源码

    DoIP协议源码 车载以太网诊断协议ISO13400协议源码 diagnostic over internet protocol (doip) stack 符合iso13400规范 very perf ...

  10. Onvif协议:理解什么是Web Services

    ONVIF规范中设备管理和控制部分所定义的接口均以Web Services的形式提供.要理解什么是ONVIF,就必须先知道什么是Web Services.所以,开始介绍ONVIF之前,我单独整理了一篇 ...

最新文章

  1. 学C++,80%都是为了搞竞赛、凑一门语言?网友:莫钓鱼
  2. 常用的键盘按键(一些小技巧)
  3. 记录k8s下配置ssl安全连接版rabbitmq
  4. Redis的事务(一次执行多条命令,防止重读重写)
  5. 测试范围不统一,引发的冲突问题
  6. java写一个外网访问的接口_Java程序员如何入门?教你写第一个程序
  7. php循环,die/exit脚本执行控制,文件载入及错误控制
  8. ubuntu 18.04 安装网易云音乐
  9. Ajax技术体系的组成部分
  10. VXLAN技术学习笔记
  11. markdown编辑器之editormd使用
  12. 彻底解决pycharm中用matplotlib表格绘制时图表中汉字设置
  13. python123随机密码生成器_一个随机密码生成器
  14. 浅谈ES6基础——Promise
  15. WARN: Establishing SSL connection without server‘s identity verification is not recommended. Acco...
  16. 私域流量社群公司团队管理KPI考核运营方案制度
  17. 详解迭代器的 fail-fast 与 fail-safe 机制
  18. 极客时间 IT 20+ 张 各架构 高清技能图谱
  19. 自媒体人如何定位?自媒体大号应该怎么去运营和发展
  20. new UI-布局之LinearLayout(线性布局)详解

热门文章

  1. Java 学生成绩管理系统(基于GUI和数据库的建立)
  2. 秒变金庸风 | NLP文本风格迁移
  3. [转载]JXTA Platform JAVA参考实现源代码分析系列文章(2)
  4. 切图具体需要切什么内容_什么是切图?网页制作中的切图是什么?
  5. 搞清clientHeight、offsetHeight、scrollHeight、offsetTop、scrollTop
  6. 用通俗易懂的方式讲解: GBDT算法及案例(Python 代码)
  7. 惠普网吧服务器型号,惠普增霸卡及相应功能之一
  8. 搜苹果ipad版_苹果iOS低版本软件最快下载教程
  9. AE遮罩路径扭曲插件BOA Boa for Macv1.3.1破解版
  10. Idea 中图片资源无法加载问题