入门车载以太网(4) -- 传输层(TCP\UDP)

目录

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

基于信号的通信方式,例如CAN通信,这是目前车内ECU应用最广泛的通信方式。这种方式关键的就是通信矩阵(DBC、LDF),需要定义好信号的发送、接收节点,封装到哪条报文,报文的发送周期,这样我们就可以完成车内所有节点的通信开发。

面向信号的通信架构(图片来源:联合电子)

仔细看通信矩阵,我们会发现很多信号都是传递传感器数据,但在如今智能网联汽车中,大量的功能需要ECU间的协调工作来实现,任何微小的功能改动都会引起整车通讯矩阵的改动,这是噩梦,以前做敏捷开发的时候,我晚上睡觉都梦到在更新DBC。所以,传统IT中基于服务的通信方式被引入进来。

  • Service-Based Messaging

基于服务的通信,听起来很抽象,但回想下汽车诊断领域14229的通信方式,Client只需要发送SID来调取各种功能服务,获取结果即可,根本不关心服务内部是如何实现。这种情况下,服务都有一个唯一且互不影响的ID号,通过服务中间件完成自身发布、订阅其他服务和通讯工作。

        面向服务的架构(图片来源:联合电子)

很明显,在传统电子电气面向信号架构(以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主要有以下特点:

  1. 无连接服务:UDP不建立连接,发送数据之前不需要建立连接,发送端和接收端之间可以直接发送和接收数据。

  2. 不可靠性:UDP不保证数据包的顺序、完整性或可靠性。如果数据包在传输过程中丢失或损坏,UDP不会进行重传或重新排序。

  3. 速度快:由于UDP不提供可靠性保证,因此它的速度比TCP快,适合那些对实时性要求高的应用。

  4. 支持多播和广播:UDP支持多播和广播,这使得它适用于需要向多个接收者发送相同数据的应用。

2.2 TCP

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

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

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

  • Sequence Number:Segment的序列号,用于保证数据的按序传输;
  • Acknowledgment Number:指明下一个希望得到的、来自发送方的序列号,所有先前的序列号被确认为收到;
  • Data Offset:TCP Header长度;
  • URG:Signals important information,置1表示有高优先级信息需要传输;
  • ACK:置1表示确认号(Acknowledgment Number)合法;
  • PSH:置1表示当前信息需要紧急处理,接收方不需要缓存,直接传给应用协议;
  • RST:置1表示重置连接;
  • SYN:置1表示建立新的连接,连接请求时SYN置1,ACK置0;连接响应时,SYN=1,ACK=1;
  • FIN:Finish,置1表示释放连接,发送方没有数据发送了。
  • Window Size:该字段16bits,指明TCP接收方缓冲区的长度(以字节为单位);
  • Urgent Pointer:仅URG置1,该字段才有效,用于表示偏移量,索引报文数据部分中最后一个紧急字节。
  • NS、CWR、ECE是最新的TCP标志,分别来源RFC 3540\3168。

 由于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总线的网络层协议,虽然很类似,但在寻址方式、通信机制还是有一定的区别。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/pingmian/60638.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

Tofu AI视频处理模块视频输入配置方法

应用Tofu产品对网络视频进行获取做视频处理时,首先需要配置Tofu产品的硬件连接关系与设备IP地址、视频拉流地址。 步骤1 Tofu设备点对点直连或者通过交换机连接到电脑,电脑IP配置到与Tofu默认IP地址同一个网段。 打开软件 点击右上角系统设置 单击左侧…

QT<30> Qt中使鼠标变为转圈忙状态

前言:当我们在写软件时,在等待阻塞耗时操作时可以将鼠标变为忙状态,并在一段时间后恢复状态,可以用到GxtWaitCursor:Qt下基于RAII的鼠标等待光标类。 一、效果演示 二、详细代码 在项目中添加C文件,命名为…

什么是CRM系统?

越来越多的企业意识到:如何有效管理与客户的关系、提升客户满意度,并通过这些提升推动销售增长,已经成为许多公司亟待解决的问题。为此,客户关系管理(Customer Relationship Management,简称CRM&#xff09…

【青牛科技】 GC6153——TMI8152 的不二之选,可应用于摇头机等产品中

在电子工程领域,不断寻求性能更优、成本更低的解决方案是工程师们的永恒追求。今天,我们要为广大电子工程师带来一款极具竞争力的产品 —— GC6153,它将成为 TMI8152 的完美替代之选。 一、产品背景 随着科技的飞速发展,电子设备…

JS 实现游戏流畅移动与按键立即响应

AWSD 按键移动 <!DOCTYPE html> <html><head><meta charset"utf-8"><title></title><style>.box1 {width: 400px;height: 400px;background: yellowgreen;margin: 0 auto;position: relative;}.box2 {width: 50px;height:…

服务器上安装Orcale数据库以及PL SQL工具(中文)

一、前期准备 1、oracle数据库安装包–>Oracle下载地址&#xff0c;版本根据当时情况就下最新的就行&#xff0c;下载时间可能有点长&#xff0c;耐心点。 2、PL SQL工具下载地址–>PL SQL下载地址&#xff0c;百度网盘可以共享【限速&#xff0c;没办法&#xff01;&am…

javaWeb小白项目--学生宿舍管理系统

目录 一、检查并关闭占用端口的进程 二、修改 Tomcat 的端口配置 三、重新启动 Tomcat 一、javaw.exe的作用 二、结束javaw.exe任务的影响 三、如何判断是否可以结束 结尾&#xff1a; 这个错误提示表明在本地启动 Tomcat v9.0 服务器时遇到了问题&#xff0c;原因是所需…

python爬虫(二)爬取国家博物馆的信息

import requests from bs4 import BeautifulSoup# 起始网址 url https://www.chnmuseum.cn/zx/xingnew/index_1.shtml # 用于存储所有数据 all_data [] page 1 global_index 1 # 定义全局序号变量并初始化为1 while True:html_url requests.get(url).textif requests.get…

2024 年(第 7 届)“泰迪杯”数据分析技能赛B 题 特殊医学用途配方食品数据分析 完整代码 结果 可视化分享

一、背景特殊医学用途配方食品简称特医食品&#xff0c;是指为满足进食受限、消化吸收障碍、代谢素乱或者特定疾病状态人群对营养素或者膳食的特殊需要&#xff0c;专门加工配置而成的配方食品&#xff0c;包括0月龄至12月龄的特殊医学用途婴儿配方食品和适用于1岁以上的特殊医…

TofuAI处理BT1120时序视频要求

时序要求 BT.1120视频用于1920x108030Hz数字视频输入。具体时序必须严格按照说明。BT.1120输入电平为1.8V。 BT1120数字视频采用YCbCr彩色格式输出&#xff0c;串行数据位宽为16bit&#xff0c;亮度在 高8bit&#xff0c;色度在低8bit&#xff0c;亮度和色度在同一个时钟周期输…

ASP.NET MVC宠物商城系统

该系统采用B/S架构&#xff0c;使用C#编程语言进行开发&#xff0c;以ASP.NET MVC框架为基础&#xff0c;以Visual Studio 2019为开发工具&#xff0c;数据库采用SQL Server进行保存数据。系统主要功能包括登录注册、宠物展示、个人中心、我的订单、购物车、用户管理、宠物类别…

嵌入式硬件实战提升篇(一)-泰山派RK3566制作多功能小手机

引言&#xff1a;主要针对于嵌入式全栈内容的知识点汇总并对于linux等相关驱动知识点进行串联&#xff0c;用大家参考学习&#xff0c;并用到了嘉立创提供的泰山派RK3566作为学习的主控。 实物演示如下所示&#xff1a; 目录 一、硬件设计 1.转接电路 2.背光电路 3.音频接…

玩转ChatGPT:文献阅读 v2.0

一、写在前面 好久不更新咯。 因为最近ChatGPT更新了不少功能&#xff08;水一篇刷存在感&#xff09;&#xff1a; 上线ChatGPT-4o模型&#xff0c;说推理能力还不错&#xff1b;上线联网功能&#xff0c;类似Kimi那种。 所以呢&#xff0c;用它来读文献就挺舒服的了。例如…

游戏引擎中LOD渲染技术

一.LOD(Level Of Detail) 为了降低GPU渲染压力,根据摄像机距离模型距离将面数较高的模型替换为面数较低的模型. LOD LOD0(distance<10) LOD1(distance<20) LOD2(distance<30) 故通常引擎中MetaMesh是由一个或多个LOD模型构成. MetaMesh mesh mesh.lod1 mesh.lod…

高性能分布式缓存Redis-分布式锁与布隆过滤器

一、分布式锁 我们先来看一下本地锁 在并发编程中&#xff0c;我们通过锁&#xff0c;来避免由于竞争而造成的数据不一致问题。通常&#xff0c;我们以 synchronized 、Lock 来使用它&#xff08;单机情况&#xff09; 来看这段代码 Autowired RedisTemplate<String,Str…

在启动 Spring Boot 项目时,报找不到 slf4j 的错误

而且 tomcat 的启动信息不知道为什么输出出来了 问 AI 得到的解决方案&#xff1a; 将 pom.xml 中的如下配置替换成这样&#xff0c;排除这个插件 <dependency><groupId>org.springframework.boot</groupId><artifactId>spring - boot - starter - …

C/C++ YUV 文件叠加自定义符号

一、前言 需要在图片文件上叠加文字&#xff0c;但是要在4M内存开发板上实现&#xff0c;实际内存不足1M&#xff0c;怎么实现&#xff1f;这个问题在网上查找的解决方案都需要使用第三方库文件&#xff0c;下载文字图像库&#xff0c;但是此开发板不能承受住这么大的内存&…

Android Studio 学习——整体框架和概念

一、创建新项目 选择File-->New-->New Project 这里可以随便选&#xff0c;我一般选择Empty Activity&#xff0c;不同的选择&#xff0c;只是界面不同而已。然后静静的等待安装就可以了 二、框架结构 1&#xff09;manifests manifests文件是一个XML文件&#xff0c;…

「JVM详解」

JVM JVM概述 基本介绍 JVM&#xff1a;全称 Java Virtual Machine&#xff0c;即 Java 虚拟机&#xff0c;一种规范&#xff0c;本身是一个虚拟计算机&#xff0c;直接和操作系统进行交互&#xff0c;与硬件不直接交互&#xff0c;而操作系统可以帮我们完成和硬件进行交互的…

Serverless架构在实时数据处理中的应用

&#x1f493; 博客主页&#xff1a;瑕疵的CSDN主页 &#x1f4dd; Gitee主页&#xff1a;瑕疵的gitee主页 ⏩ 文章专栏&#xff1a;《热点资讯》 Serverless架构在实时数据处理中的应用 Serverless架构在实时数据处理中的应用 Serverless架构在实时数据处理中的应用 引言 Ser…