中国汽车工程师之家--聚集了汽车行业80%专业人士 

论坛口号:知无不言,言无不尽!QQ:542334618 

本站手机访问:直接在浏览器中输入本站域名即可 

  • 384查看
  • 0回复

[电子架构] DoIP技术基础(一)

[复制链接]


该用户从未签到

发表于 30-3-2024 16:54:00 | 显示全部楼层 |阅读模式

汽车零部件采购、销售通信录       填写你的培训需求,我们帮你找      招募汽车专业培训老师


由于ISO 13400-2主要介绍DoIP对网络层和传输层的技术需求,而大多数从事汽车行业的朋友对TCP/IP协议以及其它主要应用在IT互联网行业的网络概念和相关技术并不了解,因此笔者在介绍ISO 13400-2的具体内容之前,首先对一些非常基础和重要的车载以太网基本概念和术语进行介绍,以方便汽车行业的朋友更容易地理解ISO13400-2的技术内容。对车载以太网的发展历史和技术优势感兴趣的朋友,可以去阅读此公众号之前的文章车载以太网(一)到(三)。

一、网络分层

OSI开放系统互联7层参考模型中最基本的概念是将网络功能划分为7层,从底层向上逐渐从基于硬件的具体功能转变为面向软件的功能。每一层有对应的软件和硬件,负责执行特定类型的任务并与其它层进行交互。一般来讲,低层负责执行更具体的任务(如物理层负责硬线信号的传输)并向高层提供各种服务;高层利用低层的服务来实现更抽象的功能,比如确保可靠的网络通信(例如传输层的TCP协议)和实现特定的用户功能(例如应用层的各种应用协议,如HTTP协议。例如,用户在使用“网页浏览器"这个用户应用程序时,使用HTTP这个应用层协议所提供的服务)。目前汽车行业所使用的基于CAN总线的UDS诊断也是基于OSI模型实现的,例如ISO 11898规定了CAN总线的物理层和数据链路层,ISO 15765-2 定义了基于CAN总线诊断的网络层传输协议,14229-2定义了诊断会话层协议。尽快如此,由于汽车行业网络结构和通讯协议相对简单,OSI模型并不会受到汽车工程师太多的关注。车载以太网、TCP/IP和互联网连接等技术的描述都是基于OSI模型,因此对于汽车工程师,深入学习和理解OSI分层架构的概念和原理是非常有必要的。笔者也必须要强调一点,使用OSI参考模型的最佳实践原则是将它作为一个解释协议和对比不同网络技术的工具,而不是刻板的套用OSI模型。举例来说,有些网络协议是运行于特定层的,但有些网络协议是可以跨层使用的,另外还有多个网络协议可以在同一层使用(AVB技术就涉及多个运行于第二层的协议)的情况。此外,会话层、表示层、应用层的边界特别模糊(TCP/IP协议模型将第5到第7层的功能集成到单个层中)。切记,没有必要刻板地为了分层而分层,分层是工具而不是目的,巧妙使用而非一成不变才能体现OSI模型的诸多优点。

二、协议

“协议”这个概念我想做过汽车网络的朋友应该都很熟悉,它在各种网络规范和网络标准中都很常见,但令人诧异的是很少有文档对“协议”这个概念提供准确的解释。就如同笔者在此公众号中解释”架构“这个概念一样,我们也先从英文”protocol"的释义中去理解这个概念。英文protocol在柯林斯英语词典中排在第一位的英文释义是”礼节“(Protocol is a system of rules about the correct way to act in formal situations),即protocol是指在某些正式场合下需要遵守的正确的行为规则。比如外交官必须了解在和其它国家代表互动时哪些行为方式是恰当的,以确保有效沟通并不会产生冒犯。protocol排在第二位的英文释义“协议”(A protocol is a set of rules for exchanging information between computers)其实是从最初”礼节“这个解释中衍生和发展而来用于计算机通信技术领域的。计算机之间为了能够有效沟通(正确无误地理解对方发出的数据)也必须在软件和硬件如何实现通信方面达成一致,并形成规则。在OSI参考模型中,协议正式被定义为:针对在不同网络设备的相同层上运行的软硬件之间的通信而制定的一套通信规则与指令。同一设备的不同层之间的通信通过“接口“来实现,每一层都向其上层提供一个明确的接口,也称为纵向通信。协议负责不同设备相同层之间的通信,也称为横向通信,。不同设备之间只有在第一层是实际物理连接在一起的,其他层的软硬件的连接都是逻辑连接。数据从发送设备的第七层向下穿过各层到达第一层,然后通过物理连接发送到接收设备的第一层,再顺着各层协议栈向上穿过各层,最后达到接收设备的第七层。这意味着,除了第一层物理连接之外,所有的横向通信都依赖于纵向通信。

DoIP技术基础(一)w1.jpg

尽管OSI对“协议”有严格的定义,但在实际使用中这个概念还是有不同的用法,很多情况下甚至错误的使用“协议”的概念,因此需要结合上下文背景才能准确地理解“协议”的实际含义。例如,有时候“协议"其实是指一组协议,即”协议族“。TCP/IP协议和以太网协议其实都包括一组协议,而不是单个协议。此外,在实际工作中,经常把CAN网络信号数据库也称作”协议“,其实都是不严谨和准确的用法。

三、报文

首先强调一点,网络设备间发送的数据都可以统称为报文(message)。在很多的规范和标准中,经常会看到用不同的名称来指代报文,尤其是这些名称通常与OSI参考模型中特定层运行的协议和技术相关,使用不用的名称指代报文有助于区分和讨论OSI参考模型中不同层所使用的各种协议。常见的用于指代“报文”的名称如下所示:

1、分组(packet):通常特指网络层协议发送的报文,比如IP分组。

2、数据报(datagram):基本上与“分组”含义相同,专门用于网络层协议发送的报文。

3、帧:一般指物理层和数据链路层传输的报文,高层协议(比如网络层协议)发送的分组或数据报在传输到低层时需要加上报文头组合成帧。

4、协议数据单元和服务数据单元:在OSI参考模型中,协议数据单元(PDU:protocol data unit)和服务数据单元(service data unit)用来描述协议报文。第N层的PDU是指第N层的协议间发送的数据,该数据由第N层的报文头信息和第N+1层封装的报文(称为第N层的SDU或者第N+1层的PDU)构成。

熟悉和了解以上这些指代不同类型报文的术语的好处(前提是术语的用法要准确且一致)是可以通过这些名称来快速确定报文所包含的内容,特别是与特定层的协议和技术相关时。但很遗憾,对于这些术语的使用并不完全一致,所以关键还是要通过上下文来理解这些名称的实际含义。

四、报文格式和数据封装

1、报头(header):报文中在实际数据之前的信息,一般包括所发送报文的重要数据事实以及解释使用报文的方法,用于实现网络设备协议元素之间的通信和控制功能。

2、净荷(payload):这个术语是从航天工业衍生而来的,原来是指飞机或者飞船能够装载的人员和货物的重量。在网络通信中,净荷是指报文中实际传输的数据。大多数报文都包含某种形式的数据,但某些报文只用于控制和通信目的,例如在数据发送前,利用这类报文建立或者终止网络逻辑连接。

3、报尾(trailer):报文中在实际数据之后的信息,通常也包含了控制信息。只有部分报文有报尾,一般情况下报尾的数据是通过净荷数据计算得出的结果。

下图为第N层的报文结构示意图:

DoIP技术基础(一)w2.jpg

如上图所示,第N层将第N+1层报文的整个内容封装成第N层报文的净荷的过程称为“数据封装”

下图以在以太网上运行的TCP/IP协议相关的OSI第1层到第4层为例,展示了数据从第4层到第1层的逐层进行数据封装过程。在OSI模型中,“报文“的正式名称是协议数据单元(PDU)和服务数据单元 SDU。

DoIP技术基础(一)w3.jpg

在接收设备中,则是对接收到的已经过封装的数据进行拆除封装的过程。以上报文传输的过程看起来确实有些繁琐,封装和拆封装的过程也必然导致效率降低,但数据封装对于创建模块化的灵活网络来说是至关重要的。尽管TCP/IP和以太网这两种技术依据的是不同标准组织制定的标准,但数据封装使得TCP/IP能够在以太网上运行也可以在其它第二层协议上(尽管以太网应用非常广泛,但并不代表没有其它的第二层网络协议)运行,而以太网也能够运载不是IP数据包的第三层协议报文。

快速发帖

您需要登录后才可以回帖 登录 | 注册

本版积分规则

QQ|手机版|小黑屋|Archiver|汽车工程师之家 ( 渝ICP备18012993号-1 )

GMT+8, 20-11-2024 17:21 , Processed in 0.247549 second(s), 30 queries .

Powered by Discuz! X3.5

© 2001-2013 Comsenz Inc.