关闭

从OSI七层模型到CAN协议

发表于:2023-8-28 09:46

字体: | 上一篇 | 下一篇 | 我要投稿

 作者:李沐白    来源:焉知汽车

  前言:经常听到汽车中的网络的是CAN协议,大概知道是什么,但是又好像不太了解,想去学习,但又看不懂专业名称,本文尝试从生活中网购一台汽车来类比说明模型和协议,希望能给大家提供一个不错的思路,为后续看协议原文作铺垫。
  1.OSI七层模型
  本章节打算从为什么是OSI模和什么是OSI模型型来简单入门地说明一下OSI七层模型,主要是为后面理解CAN协议作铺垫。
  1.1为什么是OSI七层模型?
  到20世纪70年代晚期,那时又大量专用的通信协议,这种互联工具的多样性使得使用不同协议的设备很难互相兼容,当时为了克服这一问题的可能方法就是使用统一的模型,一个为了描述一个通用的网络互联工具。OSI模型,这个模式不是绝对的,是参考模型,模型把互联通信划分了七个层次,让每层只需要专注于自己的工作,这样才能提高效率,其意义在于解耦复杂问题,各司其职。
  1.2什么是OSI七层模型?
  全称为Open System Interconnect的模型,这个模型定义了网络互联通讯的七层:①物理层,②数据链路层,③网络层,④传输层,⑤会话层,⑥表示层,⑦应用层。接下来用一个用户在网购平台购买汽车的例子来类比OSI七层模型来帮助理解和记忆。
  第①层是物理层(Physical Layer),它定义了接口与传输介质的机械和电气特性,也定义了物流设备和接口为了传输而必须执行的过程和功能,物理层负责位从一个节点到另一个节点的传递。类似于快递通过大货车运送,一个地点到另一地点,不管快递里面的内容,只管把快递从A地运到B地。
  第②层是数据链路层(DataLink Layer),将物理层对数据不做任何改动的传输通道变成可靠的链路,这样可能将物理层的数据无差错地传递给网络层,数据链路层负责帧从一节点到下一节点传递。类似于快递上面快递单的地址信息,可能快递中途会换乘不同的交通工具,但是快递单的信息会保证快递能从发出地指向接收地。
  第③层是网络层(Network Layer),负责将分组从源地址传递到目的的地址,可能会通过多个网络进行传输,这样就需要网络层确保每个分组能够从出发点到达目的地,网络层负责将各个分组从源地址传递到目的地址。类似于快递公司的作用,快递公司会根据当前的物流拥堵和快递时效要求选择不同的交通网络进行运输,即使是不同的交通网络运输也会保证快递到达目的地。
  第④层是传输层(Transport Layer),负责整个报文的的进程到进程传递,尽管网络层会保证分组能从源端到目的端传递,但是它并不了解这些分组之间的互相关系,网络层独自处理每个分组,就像每个分组都属于一个独立报文一样,不管实际上是否这样。传输层正好相反,它确保整个报文无差错并按顺序到达目的地,并在源到目的层次进行差错控制和流量控制,传输层负责一个报文从一个进程到另一个进程的传递。类似于汽车工厂是知道零件与零件之间的关系的,哪些零件凑到一起能组装成发动机,哪些凑到一起能组装成车身,但是快递公司不知道这些,快递公司只保证东西能按时不损坏到达汽车组装工厂。
  第⑤层是会话层(Session Layer),会话层负责建立和维护以及同步通信系统件的交互操作,类似于汽车组装工厂与零部件工厂间的沟通,比如说汽车工厂会跟零部件工厂说我下个月要100个零部件这叫建立,零部件工厂就说我可能不能一下子全给你 只能分5天每天给你20个 汽车工厂说好的没问题这叫维护,类似这样的沟通。
  第⑥层是表示层(Presentation Layer),表示层是两个系统之间交换信息的语义和语法,负责翻译、加密、压缩数据。类似于汽车组装工厂与零部件工厂之间是用邮件来沟通的 而且是一方为全外资车厂,一方为中方零部件厂,车厂发英文邮件,中方虽然也会回英文邮件但是回在内部展开的时候翻译为中文,以及为了防止给对手车企知道新车型通常会采用机密代号来进行邮件沟通,以及在邮寄中也会用如ABS、ADAS等缩写来沟通。
  第⑦层是应用层(Application Layer),使得用户可能访问网络,用户不需要知道什么这个链路那个链路的,只需要关注自己想要传达的信息,应用层负责向用户提供服务。类似于用户在网购平台可以选择要什么颜色的喷漆,什么类型的座椅,什么尺寸的轮毂,多大的续航里程等,都是应用层管的。
  现在把全部串起来,用户在网购平台下单购买一台自己选配好的汽车(应用层),汽车工厂收到订单就给各个零部件工厂进行邮件沟通(表示层),邮件中就会提及零件需要的数量、到达时间等信息(会话层),不同的零部件可能会在不同的时间点到达汽车工厂这部分由汽车工厂进行汇总(传输层),快递公司会根据当前拥堵情况进行运输调度(网络层),零件从一个A地到B地再到C地始终都是指向目的地的(数据链路层),进行实际运输的大货车师傅只管把零件从A城市运到B城市(物理层)。
  希望这个例子能够帮助你更好地理解和记忆OSI模型,接来我们来讨论实际车载网络中的CAN协议与SOME/IP协议
  2.CAN协议
  本章节先介绍一下CAN协议是怎么来的,而后类比类比一下上一章节例子来简单说明CAN协议里面都有什么
  2.1 CAN协议是怎么来的?
  一开始是由德国博世公司在20世纪80年代专门为汽车行业开发的一种串行通信总线,后来由于它的高性能、高可靠性被广泛应用于汽车业,航空业,工业控制,安全防护等多个领域。所以随着各行各业的广泛应用,对它的通信格式标准化也提出了更严格的要求。
  1991年发布了CAN总线技术规划(Version2.0),该技术规划共包含A和B两个部分,其中A给出了CAN报文标准格式,B给出了标准和拓展两种格式。最终成为国际标准ISO11898。
  2.2 CAN协议里面都有什么?
  先来看一下先节点现行的CAN协议,如下图:
图2-1 现行CAN协议[1]
  分别是ISO 11898-1:2015 / 11898-2:2016 / 11898-3:2006 / 11898-4:2004
  然后再把CAN协议在OSI模型中的位置和 CAN协议每一层对应的标准抛出来,如下图
图2-2 CAN协议在OSI模型中的位置
  以第一个章节中例子来看就是“零件从一个A地到B地再到C地始终都是指向目的地的(数据链路层),进行实际运输的大货车师傅只管把零件从A城市运到B城市(物理层)。”物理层和数据链路具体来说其中是很多细节的。物理层的话比如说大货车师傅从A运到B应该以多快的速度行驶?应该以什么型号的货车运输货物?等等。数据链路层的话比如说快递单要怎么写?先写什么后写什么?写错了怎么办?以及A→B→C中B要怎么样收件之后又发给C?等等。
  从ISO 11898 中能汇总成下图,物理层有3个内容,数据链路层有2个内容。
图2-3 CAN协议内容
  缩写如下表展示详细内容。
图2-4 CAN协议内容缩写详细
  先说物理层,MDI 介质相关接口 / PMA 物理介质连接 / PLS 物理信号 三部分共同定义了
  电缆与界限:CAN总线采用差分信号传输,如果使用带屏蔽双绞线,屏蔽层应单点接地。
  差分信号电压幅值:两条信号线CAN_H和CAN_L静态时均为2.5V左右,此时状态表示逻辑1,称作隐性;CAN_H比CAN_L高表示逻辑0,称为显性,此时通常CAN_H电压3.5V、CAN_L电压1.5V。
  电缆截面积与通讯距离:电缆截面积对通讯距离影响很大,特别是远距离通讯。
  信号延迟与通讯距离:高波特率情况下,制约CAN通讯距离的,是信号延迟。信号经过隔离光耦、传输电缆、ESD器件时,都会引起信号延迟。如果CAN的重同步也不足以弥补这个延迟,就会导致采样错误,最终CRC校验错误。
  信号位采样点位置:信号位采样点是指CAN节点识别一个电平逻辑的位置。
  节点数量:可以连接到网络上的节点数量由收发器可以驱动的最小负载阻抗来决定。
  共模电压范围:共模电压是指总线上的发送节点地和接收节点地之间的电势差。
  总线短路保护和热关断保护:总线短路保护是指总线与电源或地短路后,CAN收发器不会损坏,短路故障解除后,CAN收发器能继续工作。
  再来就是数据链路层,LLC 逻辑链路控制 / MAC 介质访问控制 两部分共同定义了帧结构,错误检测,执行仲裁,出错标定,故障界定等,以及报文过滤,超载通知和恢复管理。
  希望本文能在大家看原版协议时能提供一个好的思路,在遇到不能理解的问题是能通过上述例子回忆起OSI七层模型,从而解决问题。
  本文内容不用于商业目的,如涉及知识产权问题,请权利人联系51Testing小编(021-64471599-8017),我们将立即处理
《2023软件测试行业现状调查报告》独家发布~

关注51Testing

联系我们

快捷面板 站点地图 联系我们 广告服务 关于我们 站长统计 发展历程

法律顾问:上海兰迪律师事务所 项棋律师
版权所有 上海博为峰软件技术股份有限公司 Copyright©51testing.com 2003-2024
投诉及意见反馈:webmaster@51testing.com; 业务联系:service@51testing.com 021-64471599-8017

沪ICP备05003035号

沪公网安备 31010102002173号