智能化对车载网络的通信效率要求大幅提升,CAN/LIN等传统车载通信协议已经远不能满足需求,取而代之的是车载以太网通信协议。车载以太网正逐渐取代车载网络中的传统通信协议,这种通信基础设施的更新换代,也催生了立足于车载通信网络之上的诊断协议的变化。UDS是通用诊断协议的标准描述,在CAN网络时代,UDS基于CAN协议实现,被称为UdsOnCan,而基于以太网实现的UDS,则被成为DoIP协议,即Diagnose On Ip。

DoIP协议为车辆诊断协议提供了基于ip的标准实现方式,按照网络分层的观念,我们可以认为DoIP协议是工作在TCP/IP之上的又一个应用层协议,如果我们解析一个DoIP数据报文,会发现DoIP协议正是处于TCP/IP之上,如下图所示:

展开DoIP协议,协议内容包含了DoIP版本号、版本号的逆、消息类型、UDS消息的长度、源地址及目的地址,如下图所示:

DoIP的内容与TCP极为相似,都包含源地址与目的地址,以及负载的长度(和负载内容UDS数据),因此我们可以认为DoIP之于UDS的作用,类似于TCP之于HTTP的作用,明确这一点有助于我们理解DoIP通信协议的设计特点。

TCP为了建立传输通道,需要指定源端口地址及目的端口地址,并通过消息校验码、消息长度及消息序列号等一系列手段保证传输通道的可靠性,如下图所示:

同理,DoIP协议为实现将消息从一个逻辑单元传输到另一个逻辑单元的目标,也包含了源逻辑地址(Source Address)、目标逻辑地址(Target Address)以及一个简单的头部。在协议字段的设计上,DoIP远没有TCP复杂,因此DoIP所实现的传输控制功能,也远远没有TCP协议复杂,这是可以理解的,因为我们可以将DoIP看成一个嵌套的传输层控制协议,它嵌套在TCP之上,既然TCP已经实现了IP网络层复杂的传输控制,那么留给DoIP的工作,就为数不多了,主要包含如三几个方面:

  1. 逻辑地址、网络的有效性检查;
  2. UDS诊断消息的长度检查;
  3. 检查是否造成内存溢出;

如果上面的检查全部通过,DoIP将把UDS请求消息从源逻辑地址传输至目标逻辑地址。目标ECU收到DoIP请求消息之后,会首先发送一帧ACK报文,然后才会发送实际的诊断报文,如下图所示:

对于DoIP单独回复一次ACK的设计,初学者肯定会比较好奇,为什么要这么设计呢?结合前面的分析,如果我们理解了DoIP属于UDS的传输控制层,那么我们就能参透其中的原因。因为UDS涉及到了逻辑寻址,类似与TCP协议中的寻址,因此通信中需要完成一些传输层的工作,如检查逻辑地址的合法性、payload的长度等等,没有问题则返回一帧ACK,如下图所示:

接着返回一帧带UDS报文的消息,如下图:

否则返回NCK,附带否定响应的具体原因。

DoIP这种参考TCP的设计,是一种严格的分层设计思路,将通信控制和业务数据分开传输,DoIP专门负责通信传输,而UDS相对于DoIP则属于应用层协议,专门负责诊断业务的实现。

DoIP协议设计思路浅析相关推荐

  1. 兼具高效与易用,融云 IM 即时通讯长连接协议设计思路

    无论是 PC 端还是移动端,接入网络实现通信都需要建立双端的连接.关注[融云全球互联网通信云]了解更多 客户端和服务端建立连接后不断开,然后进行通信(也就是发送报文)的方式就是长连接. 与之相反,短连 ...

  2. 浅析低延迟直播协议设计:RTP/RTCP

    作者:王宇航,红点直播联合创始人&CTO.毕业于中国科学技术大学,风云直播创始团队成员,曾参与逆向Adobe 来源:UPYUN Open Talk 声明:本文已获得授权. Flash非公开加密 ...

  3. STM32芯片超低功耗设计思路

    对于给定的制造工艺和晶片区域,微控制器的功耗主要取决于两个因素(动态可控):电压和频率.ST公司L系列超低功耗芯片为130nm超低泄漏工艺,在超低功耗所做的设计思路如下: 1. 围绕Cortex-M3 ...

  4. 亿级流量网关设计思路

    本文准备围绕七个点来讲网关,分别是网关的基本概念.网关设计思路.网关设计重点.流量网关.业务网关.常见网关对比,对基础概念熟悉的朋友可以根据目录查看自己感兴趣的部分. 什么是网关 网关,很多地方将网关 ...

  5. “私有云”安全的“过渡”时期-“云朵”方案的设计思路

    一.私有云安全的尴尬现状 云计算因为能够提供虚拟化的资源池.弹性的服务能力.自助服务等,深得CIO们的青睐,为了提高企业IT设备的利用率,提高服务容灾的能力,提高对业务支撑的快速响应能力,大多数的企业 ...

  6. 我的微信'智障聊天助手'的设计思路

    2019独角兽企业重金招聘Python工程师标准>>> 前言 每次写前言最费神,就是感兴趣想研究研究,有了一点点成果希望分享交流,如果能帮助别人就很好,如果有人指导一下就更好了.这次 ...

  7. 对接接口文档_接口自动化测试框架设计思路

    接口自动化测试--框架设计思路 1 前言 之前文章跟大家分享了一下自己在接口自动化测试中进行测试准备的一些相关知识点,接下来本篇文章详细分享一下接口自动化框架设计的思路总结,希望能对初次探索接口自动化 ...

  8. iOS 组件化 —— 路由设计思路分析

    原文 前言 随着用户的需求越来越多,对App的用户体验也变的要求越来越高.为了更好的应对各种需求,开发人员从软件工程的角度,将App架构由原来简单的MVC变成MVVM,VIPER等复杂架构.更换适合业 ...

  9. 小米自动化运维平台演进设计思路

    嘉宾 | 孙寅 编辑 | 张婵 小米自动化运维平台建设大致分为三个时期,整体建设的规划比较清晰,能够一以贯之.本文介绍了小米自动化运维平台的演进思路. 现如今,随着云计算和分布式的落地和发展,越来越多 ...

  10. FPGA串口(UART)通信协议制定与设计思路详解示例

    串口(UART)通信协议制定与设计思路详解 1 概述 本文用于描述规定的串口通信协议,以及传输内容. 2 项目关于串口的要求 a) 支持BIT自检,1路UART上报BIT信息: b) 1路UART接口 ...

最新文章

  1. ASP.NET 之异步处理一(Session处理)
  2. JAVASE——File类
  3. Dozer 使用总结
  4. python变量下划线开头_一日一技:python中下划线在不同位置的作用
  5. 【LeetCode+51nod】股票低买高卖N题
  6. Ubuntu16.04安装QQ机器人
  7. Pv6报头结构以及与IPv4的比较
  8. Linux内核学习-字符设备驱动学习(二)
  9. 学会python爬虫能发财么_python如何赚钱? python爬虫如何进阶? python就业? 如何快速入门python?...
  10. 华为小程序怎么弄出来_华为手机添加桌面小程序 华为手机小程序怎么弄出来...
  11. html手动加css,添加自动到手动滑盖HTML5 - CSS
  12. JAVA自动装箱和拆箱功能是把双刃剑
  13. android仿美团外卖选择地址,Android仿美团地址选择
  14. 习题9-3 平面向量加法 (15 分)
  15. 易语言删除首尾空白符代码
  16. 树状结构及文件目录详解
  17. 把款软件可以测试双显卡,如何看自己的电脑是不是双显卡?双显卡有什么好处?...
  18. 决策树相关算法——ID3、C4.5的详细说明及实现
  19. 从花瓣与堆糖看Pinterest模式在中国的可行性
  20. 《数据库系统概念》第一章:引言

热门文章

  1. python云计算1_python云计算服务器
  2. (三)云计算技术学习--OpenStack之KeyStone
  3. vs2008 MFC工程建立
  4. 文件上传下载--DiskFileUpload
  5. 定时任务Quartz配置
  6. 基于mysql学生成绩管理论文_基于SQL Server的学生成绩管理系统设计论文
  7. win环境的radius服务器搭建
  8. 学计算机打字重不重要,怎么才能有效的学好电脑打字
  9. 首次用MFC制作界面,小白采坑记录
  10. BT种子文件以及磁力文件 解析