DoIP是Diagnostic communication over Internet Protocol 的简称,顾名思义,就是通过网络协议进行诊断通信。
ISO 13400的所有部分都基于ISO/IEC 7498-1中规定的OSI基本参考模型,该模型将通信系统分为七层。从上到下称为应用层(第7层)、表示层、会话层、传输层、网络层、数据链路层和物理层(第1层)。ISO 13400使用了这些层的一个子集。ISO 13400为DoIP指定了传输层、网络层、数据链路层和物理层。
ISO 13400由以下部分组成,其总称为"道路车辆-互联网协议诊断通讯"(DoIP):
1、 一般信息和用例定义。
2、 传输协议和网络层服务。
3、 基于IEEE 802.3的有线车辆接口。
以下部分正在筹备中
4、 以太网诊断连接器。
5、 一致性测试规范。
ISO 13400协议与OSI基本参考模型的对应关系可参考下图:

1、更快的诊断响应。
2、传输大量数据的时间更短(用于软件刷新和参数下载)。
2、使得远程的直接诊断成为可能。
根据ISO-13400的要求,DoIP通信在物理层支持100BASE-TX (100 Mbit/s Ethernet) 和10BASE-T (10 Mbit/s Ethernet) 两种制式。DoIP设备的MAC地址也符合IEEE 802.3 的要求。
ISO-13400规定,DoIP通信在传输层上必须同时支持UDP和TCP,并将UDP和TCP的使用场合进行了定义,对所使用的端口号也进行了定义。后续会说明。
ISO-13400规定,DoIP通信在网络层上使用IPv6协议,但是为了后向兼容的原因,也支持IPv4。此外,对于IPv4来说,还要支持地址解析协议(ARP),对于IPv6来说,还要支持邻居发现协议(NDP),这两个协议是用于在只知道IP地址的情况下获取MAC地址的。

DoIP数据作为SDU层层向下传递,直至构成完整的以太网帧,通过物理层的介质发送出去。DoIP的数据内容分为5个部分:
1、所使用的ISO13400版本信息,占用1个字节。
2、所使用的ISO13400版本信息依比特取反,占用1个字节。
3、数据类型,占用2个字节(标识本帧数据的用途,比如用于上报或请求车辆信息、诊断命令、诊断逻辑链接激活、alive check等)。
4、数据长度,占用4个字节(标识后面的数据长度)。
5、诊断数据,长度为0至2的32次方减1,这里的数据又分为sender address、receiver address、应用数据这三部分。
DoIP版本取值范围如下表:
| Version | 含义 |
| 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 |
DoIP数据的第三个部分是data type,即描述数据包中的数据类型,取值范围如下图所示:

上面这个表格不但定义了代表不同数据类型的值,还说明了具体的数据类型应该是通过UDP还是TCP来发,并定义了应该在哪个端口上发。
其中最常用的数据类型应该是0x8001,0x8002,0x8003了,代表的含义分别是诊断消息、诊断消息正响应和诊断消息负响应。
0x0001至0x0004用于汽车标识上报或请求,只能通过UDP报文来发送这种命令,主要用于在汽车和诊断仪进入网络之后、诊断连接建立之前的车辆发现过程。
0x0005和0x0006标识的Routing activation request 和 response用于在socket建立之后,进行诊断通信的请求。
0x0007和0x0008用于Alive check,用于检查当前建立的诊断连接socket是否仍然在使用中,如果不再使用,则关闭socket释放资源。
下图是一个DoIP数据完整结构的举例

ISO13400中定义了DoIP的4种使用场景。

这种通信场景意味着多个车辆和多个外部测试设备被连接到同一个网络。这意味着外部测试设备应有可能识别网络中的车辆,并选择与之建立通信的特定车辆。从车辆的角度来看,这意味着车辆应该实现识别机制,并且应该能够处理或拒绝多个连接尝试,因为其他外部测试设备可能会干扰当前建立的通信。外部测试设备和车辆都应支持将自身集成到现有IP网络中,其中包括网络层参数的协商。这种通信场景通常发生在车辆连接到现有网络或无线基础设施时,其他车辆和外部测试设备(例如维修车间网络)也使用这些网络或无线基础设施。

从车辆的角度来看,这个通信场景与3.2中描述的场景相同。只有外部测试设备能够支持多个连接(即插座)。这种通信场景可能发生在,例如,有一个专用的flash重编程服务器,它可以同时更新多辆汽车(例如,在经销商或制造区域)。

在这种情况下,车辆应能够清楚地分离负责每个逻辑链路的每个外部测试设备的诊断请求和响应。此外,在单个测试设备实例上运行的测试设备或应用程序应能够检测到其他测试设备实例或应用程序已经与同一车辆通信,因此,车辆不可能同时支持所有操作。

DoIP诊断同学建立连接分为四个过程:
1、物理连接(Physically connection)。
2、车辆声明(Vehicle Discovery)。
3、通信建立(Connection Establishment)。
4、诊断通信(Diagnostic Communication)。
车外客户端(Test equipment)用相应的接口卡(IP-Based Network)连接车身边缘节点(DoIP Edge Node GW)。在ISO 13400协议中规定外部诊断设备连接边缘节点,且需用激活线来激活边缘节点的DoIP功能。

物理连接后,通过相应手段获取IP地址,建立通信。

物理连接后,车辆会议广播的形式发送三次车辆声明,声明的信息可以包括:
1、VIN
2、EID
3、GID

如果诊断设备没有获取车辆信息,也可以主动请求(Vehicle Identification request)来获取相应信息(如上图所示)。
在DoIP协议中,有Socket概念:Socket一端连接着IP地址,一端连接着Port端口。并且Socket对于芯片而言是一种资源。因此有激活失效之分。

在协议中定义了Payload Type (0005/0006)用于激活Socket。

激活后,Socket使能,接下来就可以进行诊断通信。
Socket激活后,可以进行诊断通信。通信模型如下图所示:

外部Tester发送诊断请求,网关收到诊断请求后,会给与一个收到答复(Acknowledgement),用意是告诉Tester,网关此时已收到诊断请求,与此同时网关将诊断请求(Diagnostic Request)发送至Target ECU。ECU收到诊断请求,并基于这个请求给与响应。
因此对于Tester而言,一共收到两个响应。
1、Diagnostic Message Acknowledgement;
2、Diagnostic Message Response;
每一帧响应对应的帧类型不同:


在DoIP协议中,通过PayLoad Type区分报文帧类型,用于实现不同的具体功能。但是其具体发送方式都是基于TCP/UDP协议。
上述整个过程,报文的发送方式都是以TCP/IP协议(当然是将传统的TCP/IP协议做了车规级应用),定义不同的阶段模型、不同的Payload Type应用报文类型,定义合理的机制,来保证Tester与ECU稳健进行诊断通信。
以上是整个DoIP协议定义Tester和ECU通信所需要搭建的“通信桥梁”。
1.postman介绍Postman一款非常流行的API调试工具。其实,开发人员用的更多。因为测试人员做接口测试会有更多选择,例如Jmeter、soapUI等。不过,对于开发过程中去调试接口,Postman确实足够的简单方便,而且功能强大。2.下载安装官网地址:https://www.postman.com/下载完成后双击安装吧,安装过程极其简单,无需任何操作3.使用教程这里以百度为例,工具使用简单,填写URL地址即可发送请求,在下方查看响应结果和响应状态码常用方法都有支持请求方法:getpostputdeleteGet、Post、Put与Delete的作用get:请求方法一般是用于数据查询,
Ⅰ软件测试基础一、软件测试基础理论1、软件测试的必要性所有的产品或者服务上线都需要测试2、测试的发展过程3、什么是软件测试找bug,发现缺陷4、测试的定义使用人工或自动的手段来运行或者测试某个系统的过程。目的在于检测它是否满足规定的需求。弄清预期结果和实际结果的差别。5、测试的目的以最小的人力、物力和时间找出软件中潜在的错误和缺陷6、测试的原则28原则:20%的主要功能要重点测(eg:支付宝的支付功能,其他功能都是次要的)80%的错误存在于20%的代码中7、测试标准8、测试的基本要求功能测试性能测试安全性测试兼容性测试易用性测试外观界面测试可靠性测试二、质量模型衡量一个优秀软件的维度①功能性功
ES一、简介1、ElasticStackES技术栈:ElasticSearch:存数据+搜索;QL;Kibana:Web可视化平台,分析。LogStash:日志收集,Log4j:产生日志;log.info(xxx)。。。。使用场景:metrics:指标监控…2、基本概念Index(索引)动词:保存(插入)名词:类似MySQL数据库,给数据Type(类型)已废弃,以前类似MySQL的表现在用索引对数据分类Document(文档)真正要保存的一个JSON数据{name:"tcx"}二、入门实战{"name":"DESKTOP-1TSVGKG","cluster_name":"elasticsear
按照目前的情况,这个问题不适合我们的问答形式。我们希望答案得到事实、引用或专业知识的支持,但这个问题可能会引发辩论、争论、投票或扩展讨论。如果您觉得这个问题可以改进并可能重新打开,visitthehelpcenter指导。关闭9年前。我最近开始学习Ruby,这是我的第一门编程语言。我对语法感到满意,并且我已经完成了许多只教授相同基础知识的教程。我已经写了一些小程序(包括我自己的数组排序方法,在有人告诉我谷歌“冒泡排序”之前我认为它非常聪明),但我觉得我需要尝试更大更难的东西来理解更多关于Ruby.关于如何执行此操作的任何想法?
(本文是网络的宏观的概念铺垫)目录计算机网络背景网络发展认识"协议"网络协议初识协议分层OSI七层模型TCP/IP五层(或四层)模型报头以太网碰撞路由器IP地址和MAC地址IP地址与MAC地址总结IP地址MAC地址计算机网络背景网络发展 是最开始先有的计算机,计算机后来因为多项技术的水平升高,逐渐的计算机变的小型化、高效化。后来因为计算机其本身的计算能力比较的快速:独立模式:计算机之间相互独立。 如:有三个人,每个人做的不同的事物,但是是需要协作的完成。 而这三个人所做的事是需要进行协作的,然而刚开始因为每一台计算机之间都是互相独立的。所以前面的人处理完了就需要将数据
文章目录概念索引相关操作创建索引更新副本查看索引删除索引索引的打开与关闭收缩索引索引别名查询索引别名文档相关操作新建文档查询文档更新文档删除文档映射相关操作查询文档映射创建静态映射创建索引并添加映射概念es中有三个概念要清楚,分别为索引、映射和文档(不用死记硬背,大概有个印象就可以)索引可理解为MySQL数据库;映射可理解为MySQL的表结构;文档可理解为MySQL表中的每行数据静态映射和动态映射上面已经介绍了,映射可理解为MySQL的表结构,在MySQL中,向表中插入数据是需要先创建表结构的;但在es中不必这样,可以直接插入文档,es可以根据插入的文档(数据),动态的创建映射(表结构),这就
目录1关系运算符2运算符优先级3关系表达式的书写代码实例:下面是面试中可能遇到的问题:1关系运算符C++中有6个关系运算符,用于比较两个值的大小关系,它们分别是:运算符描述==等于!=不等于小于>大于小于等于>=大于等于这些运算符返回一个布尔值,即true或false。例如,当x等于y时,x==y的结果为true,否则结果为false。2运算符优先级在C++中,关系运算符的优先级高于赋值运算符,但低于算术运算符。以下是关系运算符的优先级,从高到低排列:运算符描述>,,>=,关系运算符==,!=相等性运算符&&逻辑与`如果在表达式中有多个运算符,则按照优先级顺序依次进行运算。3关系表达式的书写在
一.计算机组成原理 这本书利用组合逻辑、同步时序逻辑电路设计的相关知识,从逻辑门开始逐步构建运算器、存储器、数据通路和控制器,最终集成为完整的CU原型系统,使读者从设计者的角度理解计算机部件构成及运行的基本原理,掌握软硬件协同的概念。 全书共9章,主要内容包括计算机系统概述、数据信息的表示、运算方法与运算器、存储系统、指令系统、中央处理器、指令流水线、总线系统、输入输出系统。1.计算机系统概述1.1计算机发展历程 计算机是一种能够按照事先存储的程序,自动、高速、准确地对相关信息进行处理的电子设备。1946年2月,世界上第一台电子数字计算机ENIAC(ElectronicNum
其实现在基础的资料和视频到处都是,就是看你有没有认真的去找学习资源了,去哪里学习都是要看你个人靠谱不靠谱,再好的教程和老师,你自己学习不进去也是白搭在正式选择之前,大可以在各种学习网站里面找找学习资源先自己学习一下为什么选择学软件测试?同学们理由众多!大概分这几类:①不受开发语言、行业产品变化限制;②入门更简单,对零基础、女生都友好;③软件项目都需要测试人员,职业生涯稳;④学习周期短,但薪资并不低。要想“肩扛”一条线?需掌握三大技能:技能1:掌握测试流程,熟悉系统框架能提前与开发人员一起制定测试计划,通过测试左移,推动代码评审,代码审计,单元测试,自动化冒烟测试,来保证研发阶段的质量。技能2:
Asitcurrentlystands,thisquestionisnotagoodfitforourQ&Aformat.Weexpectanswerstobesupportedbyfacts,references,orexpertise,butthisquestionwilllikelysolicitdebate,arguments,polling,orextendeddiscussion.Ifyoufeelthatthisquestioncanbeimprovedandpossiblyreopened,visitthehelpcenter提供指导。已关闭8年。什么是学习ruby语言