汽车以太网对TCP/IP协议簇的应用

版权声明:博主原创文章,如有雷同纯属娱乐。 https://blog.csdn.net/faihung/article/details/88180862

汽车以太网与传统以太网的主要区别在于物理层及应用层,而网络层及传输层大多参考传统应用,即TCP/IP协议簇(TSN暂不讨论)。使用传统网络TCP/IP协议簇,既能加快汽车以太网数据传输的速度,又能与因特网无缝连接,从而实现车内与车外的信息交互。同时,还具有良好的扩展空间以及支持新增上层应用协议的传输。

OSI(开放系统集成)模型是通信行业的基本模型,具体规定了每一层所应具备的功能:

  第七层:应用层     定义了用于在网络中进行通信和数据传输的接口 - 用户程式;提供标准服务,比如虚拟终端、文件以及任务的传输 和处理; 
  第六层:表示层     掩盖不同系统间的数据格式的不同性; 指定独立结构的数据传输格式; 数据的编码和解码;加密和解密;压缩和 解压缩 
  第五层:会话层     管理用户会话和对话; 控制用户间逻辑连接的建立和挂断;报告上一层发生的错误 
  第四层:传输层     管理网络中端到端的信息传送; 通过错误纠正和流控制机制提供可靠且有序的数据包传送; 提供面向无连接的数 据包的传送; 
  第三层:网络层     定义网络设备间如何传输数据; 根据唯一的网络设备地址路由数据包;提供流和拥塞控制以防止网络资源的损耗 
  第二层:数据链路层 定义操作通信连接的程序; 封装数据包为数据帧; 监测和纠正数据包传输错误 
  第一层:物理层      定义通过网络设备发送数据的物理方式; 作为网络媒介和设备间的接口;定义光学、电气以及机械特性。

而TCP/IP协议簇亦是一种分层结构,相对应OSI模型中的第三层网络层及第四层传输层。TCP/IP(Transmission Control Protocol/Internet Protocol)协议包含了一系列构成互联网络基础的网络协议,是Internet的核心协议。

TCP/IP协议簇的每一层包含的都是一些相对独立的协议,使用时可以根据系统的需要把这些协议混合并重新搭配。当应用层的数据用TCP传送数据时,数据首先被传送到协议栈中,然后逐层封装,最后在物理层以比特流的形式进行传输。其中在每一层的封装过程中都要增加一些首部信息(有时也需要尾部信息)。具体封装过程如上图所示,首部信息中相应字段用来表明本层所服务的上层协议类型,接收端可以依据这些字段进行分用。


接下来分别介绍一下网络层及传输层的一些主要协议。

1. 网络层

以太网在数据链路层传输数据时,局限于一个子网内。若两个不在同一子网的设备需要进行通信,就需要借助路由器进行数据转发。因此传输过程中就需要找到一种方法,能够区分MAC地址是否在同一个子网内,而MAC地址本身无法实现这一点。因机是否属于同一个子网。这套地址也称做“网络地址”,即IP地址。

  • IP协议:

    IP协议是TCP/IP协议簇的核心,传输层上的数据信息和网络层上的控制信息都以IP报文的形式传输。IP协议定义的地址称为IP地址,IPv4地址是一个32位的地址,它定义了一台主机或路由器与因特网连接时全球唯一的地址。使用IP地址判断设备是否在同一子网的方法就是将IP地址与子网掩码作“与”运算,求各自的子网地址,如果相同则在同一子网中。

    网络层传输的数据内容称为数据报文,包含首部和数据两个部分。IP报文首部如上图所示。主要包含了版本号、长度、IP地址、分片等信息。IP报文的首部长度为20到60字节,整个数据报文的总长度最大为65535个字节,而以太网帧(二层报文)的数据部分最长只有1500字节,因此如果IP报文长度超过了1500字节,就需要进行分片传输。

    汽车行业中通常会将车内节点设置为静态IP地址,即预先分配好固定的IP地址。而车外节点(比如T-Box、诊断边缘节点等)则会通过DHCP分配动态IP地址。

  • ARP协议:

    IP数据传输是封装在以太网帧中传输的,因此传输过程中同时需要MAC地址及IP地址。而通常情况下目标主机的IP地址是已知的,而MAC地址是不知道的,所以就需要一种能够通过目标主机IP地址获得其MAC地址的机制。这里又可以分为两种情况。

    • 第一种情况:如果两个主机不在同一子网内,就需要把数据报文发送到两个子网连接处的路由器或网关(Router/Gateway),让网管处理。
    • 第二种情况:如果两台主机在一个子网内,那么就需要使用ARP协议,得到目的主机的MAC地址。 

       ARP协议也是通过发送数据报文(封装在以太网帧中)来实现的。其报文中包含发送端的IP地址及MAC地址,接收端的IP地址,在接         收端的MAC地址处输入全0(因为此时不知道MAC地址,以全0代替)。以太网帧的目的地址填入全F,表示这是一个广播地址(此时         不知道接收端目的地址,广播发送给同一子网的所有主机),这些主机接收到数据报文之后,将目的IP地址与自己的IP地址表作比             较。若不同则丢弃,若相同则以单播方式向发送端发送ARP应答报文以报告自己的MAC地址。

  • ICMP协议:

    由于IP协议提供的是不可靠的、无连接的数据传输方式,它本身缺少差错报告和纠正机制,ICMP协议就是为了弥补这个缺憾而产生的,其负责网络中的错误处理。虽然ICMP是一个网络层协议,但是它的报文是先封装成IP报文,然后再封装到以太网帧中。如平时我们使用“ping命令”发送回送请求与应答报文来确定两台主机或路由器在IP层能否通信,就是一种典型的ICMP协议的应用。

传输层

有了MAC地址和IP地址,我们就可以在互联网上任意两台主机之间建立通信。但同一台主机上有许多程序(进程)都需要使用网络。比如,当我们一边浏览网页,一边使用QQ聊天时,一个数据包从网络上发来时,无法分辨出它表示的是网页的内容,还是聊天的内容。因此,还需一个参数来表示该数据包供哪个程序使用,这个参数就是端口(Port)。其本身就是不同网卡的程序编号,不同的程序对应于不同的端口。传输层的功能就是建立端口到端口的通信。只要确定了主机和端口,就可以实现程序之间的通信。代表主机的IP地址与端口号组合后成为“套接字”(socket)。

  • UDP协议:

UDP是一种简单的、无连接、不可靠的传输协议。若某进程需要发送一个不关心其可靠性的报文,可使用UDP。UDP报文同样由首部和数据部分组成,首部主要定义了发送和接收端口。UDP报文封装在IP数据段中。UDP没有流量控制机制,在收到分组之后也不会有确认,但是它提供了某种程度的差错控制。如果在收到的UDP分组中检测到错误,则说明需要丢弃该分组。

TCP协议:

不同于UDP,TCP是一种面向连接的、可靠的传输协议。它能够保证两端通信主机之间的信息可达。在传送数据前,源主机需要先和目的主机建立连接,然后在此连接上,按顺序收发带有编号的数据段。同时,需要对每个数据段进行确认,如果指定时间内没有收到确认,源主机重发该数据段。数据传输完毕之后还需要将连接关闭。TCP能够正确处理传输过程中丢包、传输顺序错乱等异常情况。

TCP报文同样由首部和数据部分组成,如上图所示首部中包含了源/目的端口、序号、确认号、控制字段等。这些控制字段主要用在TCP的流量控制、连接建立和终止、连接异常终止以及数据传送方式等方面。虽然在某些特定应用场合中,TCP/IP协议未来有可能会被AVB/TSN协议所取代,但截至目前,仍然是汽车以太网通信中普遍采用的通信方式。许多汽车相关的应用层协议诸如DoIP、SOME/IP、UDPNM等都是基于TCP/IP实现的。TCP/IP中Socket的设计是SOA架构设计中的重要部分,而TCP/IP协议栈的开发或集成则是以太网节点实现中的重要部分。

猜你喜欢

转载自blog.csdn.net/faihung/article/details/88180862
今日推荐