0
点赞
收藏
分享

微信扫一扫

【ROS2】usb摄像头识别二维码

目录

1.ECU通信方式的变化

2.传输层概述

2.1 UDP

2.2 TCP

3. TCP和ISO 15765-2


1.ECU通信方式的变化

我们先回顾下两种通信方式:Signal-Based Messaging、Service-Based Messaging。

  • Signal-Based Messaging
  • Service-Based Messaging

很明显,在传统电子电气面向信号架构(以CAN通信为主)是越来越难满足未来网联汽车的需求;因此在这种背景下,车载以太网被引入,它提供了许多不同级别控制和可靠性的协议。这些协议可以在同一网络上使用不同的软件逻辑连接共存;也有协议如AVB,为音频/视频流等应用程序的数据提供极端延迟保证。

2.传输层概述

车载以太网前3层(物理层、数据链路层、网络层)实现了主机间的通信,物理层通过cables传输比特流,数据链路层传输以太网帧,网络层传输数据报给到目的主机,但是由于ECU可能存在多个进程,具体应该给到哪个进程?这就由传输层来完成。

传输层位于OSI的第4层,主要作用是提供端到端的数据传输,负责两个通信端的会话建立、维护和终止,由于主机IP地址固定,因此在主机进程上新增了本地唯一的端口号,利用Port号在软件层级进行寻址,以保证数据能够正确送到目的进程。

网络层和传输层作用域如下所示:

这一层有两个非常重要的协议:TCP、UDP。

  • UDP:简单、快速,无连接,想象一下广播,及时丢一两帧数据也还是可以接受;
  • TCP:复杂,较慢,包括可靠性,流量控制和其他服务保证。

在前面我们聊到,车载以太网中,IP地址可以表示一个ECU,而端口(Port)则用于表示一个软件进程,如vECU等,TCP、UDP有两个16bit端口地址(source、destination);IP地址+Port = socket(套接字),源、目的地socket可用于表征一个网络连接,那么接下来我们继续研究TCP和UDP。

2.1 UDP

UDP,全称User Datagram Protocol,它提供无连接数据报传输,增进了进程通信能力。其数据报格式如下图:

可以看到,UDP Header定长为8字节,其中,Length指UDP长度,最长64K bytes,但是考虑到IP数据报总长度最大为65535,因此实际一帧UDP最大长度为65535 - 20(IP Header)- 8(UDP Header) = 65507字节。此外,Checksum在UDP/IP协议栈中保证数据完整性的唯一手段。

因此,我们可以总结,UDP主要有以下特点:

2.2 TCP

TCP,全称Transmission Control Protocol,提供了面向连接、可靠的数据传输服务,保证了端到端的数据传输可靠性,在我看来,它和ISO 15765-2(UDS网络层/TP层)很类似,且听慢慢道来。

TCP不同于其他协议,它天生就带有连接的概念,意味着两个节点要通信,一方必须发起连接请求给到另一方,且该请求还要被接收方接收,从这个角度出发,就可以用client/server 模型来描述。服务请求方叫Client(客户端),服务提供方叫Server(服务器),客户端负责发起请求和接收服务,而服务器负责处理请求和提供服务。

TCP在IP层协议号为0x06,下图是TCP段格式:

 由于TCP是面向连接的协议,但这个连接是软件层面虚拟连接,那就意味着TCP需要来控制这个连接的动作,让源节点和目标节点之间的这条虚拟通道畅通无阻,同时还要确保丢失、损坏的报文可以容易重发。因此,面试八股文:“三次握手建立连接,四次握手关闭连接”就来了。

三次握手建立连接如下图所示:

建立完成后,双方都将ACK置位,交换并确认了对方的初始序列号,就可以通过连接互相传输数据。

那为什么要三次握手才能建立连接?本来只需要一问一答即可建立,但实际网络通信可能出现丢帧或者响应丢失,这时候Client再次发起连接请求,通过重传连接,但这又导致了重复连接,三次握手要求对所有报文进行编号,每次建立连接时都产生一个新的序列号,这样可以避免上述问题。

四次握手关闭连接与握手类似,只是标志位不一样;

(1)客户端发送ACK+FIN给服务器;(2)服务器回复ACK;(3)服务器回复ACK+FIN给客户端;(4)客户端回复ACK

3. TCP和ISO 15765-2

既然前面讲过了TCP和ISO 15765-2类似,我们来看看它们之间的差异。

建立连接阶段:ISO 15762-2 是一次握手建立连接,客户端发送带有长消息标志、总字节数和前几个字节的初始帧,服务器发送流控帧用于控制数据传输速率、告诉在发送方必须等待接收方的另一个流量控制帧之前发送多少帧;TCP则需要三次握手,通过SYN\ACK来建立连接;

流控制:TCP内置了流控制机制(如滑动窗口协议),而ISO15765-2通过N_PCI中的流控制帧(FC)来实现流控制

断开连接阶段:ISO15765-2是在所有数据传完后断开,TCP则需要四次握手,需要FIN\ACK来确认断开连接。

此外,TCO还提供了多种标志位,用于处理各种突发情况,总体来说比较完善。总结来说,TCP是一种通用的、面向连接的传输层协议,而ISO15765-2是一种专门针对CAN总线的网络层协议,虽然很类似,但在寻址方式、通信机制还是有一定的区别。

举报

相关推荐

0 条评论