入门车载以太网(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,一经查实,立即删除!

相关文章

Javascript中的深浅拷贝以及实现方法

目录 一、前言 二、深浅拷贝 1、浅拷贝 2、深拷贝 三、递归实现深拷贝 1、js库lodash里面cloneDeep内部实现了深拷贝 2、Json序列化 四、异常处理 throw try ... catch debugger 五、处理this 普通函数 箭头函数 六、改变this指向 call apply bind 七、防抖…

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

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

深入探索 React Hooks:原理、用法与性能优化全解

一、引言 在现代 React 开发领域,Hooks 已成为不可或缺的一部分,赋予函数组件强大功能,使其能胜任复杂任务。本文将全面剖析 React Hooks,助您深入理解并熟练运用。 二、React Hooks 是什么 (一)Hooks 出现的背景 早期 React 主要依赖类组件,其通过this.state管理状…

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

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

pom.xml和spring-config.xml

pom.xml: Spring的pom.xml文件是Maven项目中的核心配置文件,它并非直接由Spring框架提供,但Spring项目(包括Spring Boot)通常会使用pom.xml来管理项目的依赖、插件和构建配置。这一点得到了广泛的社区支持和官方文档的确认。在Sp…

Ubuntu20.04 为脚本文件创建桌面快捷方式 ubuntu

Ubuntu20.04 为脚本文件创建桌面快捷方式 在Ubuntu 20.04中,为脚本文件(如 .sh 文件)创建桌面快捷方式是一种提升用户效率的实用方法,允许用户通过图形用户界面直接执行重要或常用的脚本。以下是一种详细、专业且逻辑清晰的通用方…

等保测评怎么做?具体流程是什么?

等保测评是对信息系统进行等保(等级保护)安全评测的过程。等保是指对信息系统进行等级化保护管理,目的是提高信息系统的安全性,防止信息泄露、篡改、破坏等安全问题。哈尔滨等保测评按照《中华人民共和国网络安全法》及《信息安全…

【云计算解决方案面试整理】3-7主流云计算平台、云计算架构、安全防护

准备面云计算解决方案的岗位,整理了一些,也请大佬们指点。 文档分为 云计算基础概念、云计算技术原理、主流云计算平台(以天翼云为例)、云计算架构(弹性设计、高可用设计、高性能设计)、安全防护几个方面。 三、主流云计算平台 1.阿里云云计算平台 强大的计算能力:拥有…

什么是CRM系统?

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

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

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

自動換IP為什麼會不穩定?

自動換IP可能導致不穩定的原因有以下幾點: 1. 連接中斷 自動換IP的一個直接後果就是連接中斷。每當IP地址發生變化時,網路連接可能會短暫中斷。這就像你在搬家時,暫時無法接收郵件一樣。對於需要持續連接的任務,比如視頻會議或線…

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…

Excel SUMIFS

SUMIFS 是 Excel 中一个非常强大的函数&#xff0c;用于根据多个条件对数值区域进行求和。它是 SUMIF 函数的升级版&#xff0c;能够处理多个条件&#xff0c;使得数据分析变得更加精确和方便。 SUMIFS 函数的语法 excel 复制代码 SUMIFS(sum_range, criteria_range1, criteri…

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

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

2024-在Gentoo claculate Linux中设置中文支持

在Gentoo calculate Linux中设置中文支持&#xff1a; 编辑/etc/locale.gen文件&#xff1a; 打开/etc/locale.gen文件&#xff0c;在文件中添加以下两行来启用中文locale&#xff1a; zh_CN.UTF-8 UTF-8 # 如果需要GBK编码&#xff0c;也可以添加 zh_CN.GBK GBK保存并关闭文件…

开源模型应用落地-qwen模型小试-Qwen2.5-7B-Instruct-tool usage入门-串行调用多个tools(三)

一、前言 Qwen-Agent 是一个利用开源语言模型Qwen的工具使用、规划和记忆功能的框架。其模块化设计允许开发人员创建具有特定功能的定制代理,为各种应用程序提供了坚实的基础。同时,开发者可以利用 Qwen-Agent 的原子组件构建智能代理,以理解和响应用户查询。 本篇将介绍如何…

TofuAI处理BT1120时序视频要求

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