【科普系列】TCP 协议:数据传输的“可靠卫士”

news/2025/10/29 12:29:50/文章来源:https://www.cnblogs.com/polelink/p/19174071

 

在智能汽车加速迈入数字化的今天,车载以太网早已不是简单的 “数据通道”,而是像纵横交错的城市快速路网络,日夜承载着自动驾驶的决策指令、智能座舱的影音交互数据、云端互联的实时路况信息 —— 这些数据洪流如同高速行驶的车流,一旦出现 “丢件”“堵车”,小则影响车机使用体验,大则关乎自动驾驶的安全决策。而在这条 “信息高速公路” 上,有一位默默守护的 “卫士”,始终确保关键数据不丢失、不错乱、准时抵达目的地,它就是我们今天要聊的核心 ——TCP 协议。

 

 

 

 

TCP 协议概念

 

 

TCP协议(Transmission Control Protocol,传输控制协议)是车载以太网中的核心组件之一,主要运行于OSI模型的传输层。作为一种面向连接、可靠且基于字节流的传输层通信协议,TCP凭借其多项关键机制包括三次握手、四次挥手、确认应答、超时重传、滑动窗口、拥塞控制以及保活机制等有效保障了数据传输的可靠性与稳定性,确保数据在网络中有序、无误地传输。

 

 

TCP报文结构

 

TCP协议报文也称TCP报文段,是TCP通信的基本单元,一个TCP报文段由首部和数据两部分组成,其中首部包含了必要的控制信息,确保数据的正确传输和连接管理,下图是TCP报文结构,并对TCP首部进行了格式解析:

 

 

源端口号:占16 位,表示发送方的端口号,取值范围0~65535;

目的端口号:占16位,表示接收方的端口号,取值范围0~65535;

序列号:占32位,表示本报文段所发送的数据的第一个字节的序号,取值范围0~2^32 – 1,当序号增加到2^32-1后,下一个序号就又回到0;

确认号:占32位,表示期望收到对方下一个报文段的第一个数据字节的序号;

首部长度:占4位,表示TCP首部数据长度,以4字节为单位计数,最大长度为60字节;

标志位:占6位,包括URG、ACK、PSH、RST、SYN、FIN 6个标志位;

URG:占1位,紧急指针标志,当URG被设置1时,紧急指针字段有效;

ACK:占1位,确认标志,当ACK被设置1时,确认号字段才有效;

PSH:占1位,推送标志,当收到TCP报文段中的PSH值为1时应尽快将数据传递给应用程序,不需要等到整个缓存都填满后再向应用层传递;

RST:占1位,重置连接标志,当RST被置1时表示连接错误或者连接被拒绝;

SYN:占1位,同步标志,用于连接建立,当SYN被置1时表示一个连接请求或连接接收报文;

FIN:占1位,结束标志,用于关闭连接;

窗口大小:占16位,表示接收方希望一次接收多少字节;

检验和:占16位,用于校验数据的完整性;

紧急指针:占16位,当URG标志置1时紧急指针才有效,紧急指针是一个正的偏移量,和序列号字段的值相加表示紧急数据最后一个字节的序号;

选项:可变长度,最大长度为40字节【计算方式 :首部总长度-20字节固定长度】,由于TCP首部的偏移单位为4 字节,当选项占用字节个数不是4字节的整数倍时,需要进行数据填充。

 

以下为Wireshark数据示例

 

 

 

 

TCP连接建立与终止

 

 

TCP协议是一种面向连接的协议,在进行数据传输之前,需通过三次握手建立连接,数据传输完成后,通过四次挥手断开连接。

 

1.三次握手

 

1)第一次握手(SYN):客户端向服务端发送一个SYN报文,并且会随机生成一个客户端的序列号(seq)。

 

2)第二次握手(SYN-ACK):服务端收到来自客户端的SYN报文后也会生成一个随机的序列号,同时也会计算出确认号(Ack),并通过SYN-ACK 报文发送给客户端,该确认号(Ack)也会告知客户端下一次期望接收到报文序列号是多少。

 

3)第三次握手(ACK):客户端收到来自服务端的SYN-ACK 报文后,会发送一个ACK报文通知服务端,确认接收到了序列号并可以开始通信。

 

三次握手过程如图所示,此过程确保了双方都能确认对方的连接能力,从而建立起一个可靠的,双向的通信通道。

 

 

 

2.四次挥手

 

 

1)第一次挥手(FIN):客户端发送一条FIN报文,通知数据发送完毕,希望关闭连接。

 

2)第二次挥手(ACK):服务端回复一条ACK报文,确认收到了客户端FIN报文,ACK报文中的确认号是收到FIN报文的序列号加1,表示所有数据已被接收。

 

3)第三次挥手(FIN):服务端发送完所有数据后,也会发送一条FIN报文给客户端,通知数据发送完毕,准备关闭连接。

 

4)第四次挥手(ACK):客户端回复一条ACK报文,确认收到了服务端的FIN报文,至此,连接完全关闭。

 

如下图所示,四次挥手机制确保了双方都有机会发送完所有数据,并且相互确认了对方的终止请求,从而实现了TCP连接的优雅关闭。

 

 

在挥手过程中涉及到几种状态,如下所示:

 

 

ESTABLISHED状态: 已建立连接的状态,可正常收发数据;

FIN-WAIT-1状态:客户端向服务端发送FIN报文后进入FIN-WAIT-1状态,此状态下可以接收数据,禁止发送新数据;

FIN-WAIT-2状态:客户端接收到ACK 报文后进入FIN-WAIT-2状态,此状态可以接收数据,停止发送新数据;

CLOSE-WAIT状态:服务端发送ACK 后进入CLOSE-WAIT状态,此状态可以发送数据,停止接收新数据;

TIME-WAIT 状态:客户端接收到来自服务端FIN报文并返回ACK后进TIME-WAIT 状态,该状态持续时间为2MSL(Maximum Segment Lifetime,最大报文段生存时间);

LAST-ACK 状态:服务端发送FIN报文后进入此状态等待客户端发送ACK报文;

 

 

 

TCP的重要机制

 

2.确认应答与超时重传

 

TCP 通过确认应答(ACK)实现可靠的数据传输,在建立TCP连接时会双方都会产生一个属于自己的序列号,当服务端收到数据后会根据seq信息判断是否所期望的数据序号,判断没问题后会响应一条ACK 报文告知对方已发送成功。

 

如下图所示:

 

 

数据在网络通道上传输常常会遇到突发情况,导致数据未发送到目的地,遇到这种情况TCP协议作为交通指挥官将会行使自己的超时重传权力来处理突发状况。如下两种情景所示:

 

情景一:当客户端在一定时间内没有收到确认应答,会认为自己数据已经丢失并进行重传。

如下图所示:

 

 

情景二:服务端回复了确认应答,但是服务端在一定时间内并未收到,则客户端也会进行重新发送。

 

如下图所示:

 

 

由以上两种情景可知,当客户端在一定时间内未接收到应答报文才会进行重传,这个时间定义为超时重传时间(RTO),如果重传后还未接收到应答报文,则重传时间为2*RTO,以此类推,每重传一次RTO值会加倍,这种行为也称为指针退避策略。

 

2.滑动窗口机制

 

通过TCP 的确认应答和超时重传机制可知,每发一个TCP报文段时都要等待对方的应答报文,这样的传输方式降低了网络吞吐量,为了解决这个问题,TCP协议又增加一个滑动窗口功能。简单的讲,在服务端的窗口大小范围内发送一个TCP报文段后不必要一直等待确认应答,而是可以继续发送。

 

假设需要发送1000字节数据,TCP最大报文段为100字节,服务端窗口大小为400字节,数据该如何进行传输呢?

 

 

如下图所示:

 

 

服务端滑动窗口:当收到TCP报文段数据总长度为400字节时,已占满了整个窗口大小,此时无法再接收其他数据,需要确认接收后才可以释放一定的缓存空间。

 

如下图所示:

 

 

客户端滑动窗口:

 

 

3.拥塞控制机制

 

通过滑动窗口、确认应答、超时重传等机制都体现了TCP协议传输的可靠性,当网络拥堵状态下,由于客户端接收不到确认应答报文会在一定时间内进行数据重传,这样反而加重了拥堵程度,而TCP的拥塞控制就是避免将过多的数据包被发送到网络中,导致网络拥堵和数据丢失,TCP拥塞控制算法包括以下四个主要部分:

 

(1)慢启动

 

慢启动为发送方的TCP增加了另一个窗口:拥塞窗口(congestion window),记为cwnd,当两个主机建立TCP连接时,假定拥塞窗口被初始化为1个报文段(MSS)。发送方开始时发送一个报文段,然后等待ACK。当收到该ACK时,拥塞窗口从1增加为2, 即可以发送两个报文段。当收到这两个报文段的ACK时,拥塞窗口就增加为 4,这是一种指数增加的关系。

 

如下图所示:

 

 

(2)拥塞避免

 

因慢启动中拥塞窗口呈指数增长,当达到一定值时会再次造成网络拥塞,为避免这种现象,将设置一个阈值,当达到阈值后拥塞窗口将进行缓慢增长,这种方法称为拥塞避免算法,而这个阈值称为慢启动阈值(slow start threshold),记为ssthresh,拥塞避免算法需要维持两个变量:一个拥塞窗口和一个慢 启动阈值。

 

工作过程下图所示:

 

在该图中,设置ssthresh初始值为16个报文段,在时刻0发送了一个报文段,在时刻1收到它的ACK,此时cwnd 增长为2,接着发送了2个报文段,并假定在时刻2接收到它们的ACK,于是cwnd增加为4(对每个ACK增加一次),这种指数增长方式一直进行到时刻3和4之间收到8个ACK后,cwnd等于ssthresh时才停止,从此刻起,cwnd以线性方式增长,在每个往返时间内最多增加一个报文段,假设在时刻4和5之间出现了超时情况,则重新进入慢启动,此时cwnd 为1,ssthresh值更新为cwnd/2。

 

(3)快速重传

 

客户端如果连续收到3个或者3个以上的重复ACK,此时会认为某一报文段丢失并立刻进行重传而不需要等待超时重传的时间,这种策略称为快速重传算法。

 

如下图所示:

 

 

1)客户端发送数据Seq1,服务端接收到返回Ack2(希望下一个数据的Seq号信息2);

 

2)客户端发送数据Seq2,因某种原因使其发送数据中断无法到达;

 

3)客户端继续发送数据Seq3,因服务端未收到期望的Seq2的数据信息,继续回复Ack2;

 

4)客户端继续发送Seq4,同理,服务端继续回复Ack2;

 

5)当客户端接收到三次重复的Ack2信息后确认发送数据Seq2丢失,客户端重新发送Seq2,服务端接收到Seq2数据后,回复Ack5告知客户端Seq1-Seq4数据段全部接收成功,期望下一次接收的数据信息为Seq5;

 

(4)快速恢复

 

当快速重传之后,不经过慢启动过程而直接进入拥塞避免阶段,这就是快速恢复算法,未经过慢启动的原因是因为接收方只有收到另一个报文段时才会产生重复的ACK,也说明了后续的报文段已经成功发送到服务端的缓存中,并不需要减少网络上的数据流,快速恢复算法过程如下所示:

 

1)当收到第3个重复的ACK时,将ssthresh设置为当前拥塞窗口的一半,并重传丢失的报文段,设置cwnd为ssthresh +3个报文段;

 

2)每次收到另一个重复的ACK时,cwnd增加一个报文段大小

 

3)当收到对丢失报文和其后若干报文段的累计确认后置cwnd=ssthresh,进入拥塞避免阶段。

 

 

4.保活机制

 

保活机制(Keep-Alive) 是确保TCP连接处于活动状态或者及时检测并关闭空闲连接的一种方法。关于保活机制有以下几个重要参数:

 

保活时间:处于非活动状态的时间内

保活时间间隔:两个保活探测报文的时间间隔

保活探测数:探测报文的最大次数

 

描述:如果在保活时间内连接处于非活动状态,则TCP一端将会开启保活机制向另一端发送保活探测报文,如果客户端没有收到响应报文,则经过保活时间间隔后会再次发送一条保活探测报文,直到发送次数达到保活探测数,此时将认为另一端不在线,并关闭TCP连接。保活探测报文的报文段长度为0或者包含一个字节的数据,序列号为对方主机最大应答号减1

 

TCP在车载以太网中扮演关键角色,通过连接管理、确认应答、超时重传、拥塞控制等机制,实现数据的高效、可靠传输,其实现遵循国际标准文档(如RFC793),从而保证不同厂商提供的TCP实现具备良好的互通性与兼容性,为OTA、诊断、信息 娱乐等核心功能提供了坚实的网络基础。

 

与此同时,OPEN联盟发布了相应的测试规范,其中《OPEN Alliance Automotive Ethernet ECU Test Specification Layer 3-7》明确列出了TCP协议的测试项目,包括标志位测试、窗口测试、序列号测试等,为行业提供了统一的验证依据。

 

北汇信息作为一家专注于汽车电子测试领域的企业,在车载以太网测试方面积累了丰富经验。我们可提供专业的培训、技术咨询及完整的测试解决方案,协助汽车制造商与零部件供应商确保车载以太网系统的可靠性及安全性。如您需要具体的测试服务或希望了解更多信息,欢迎随时联系我们。

参考文献:

【1】《TCP/IP详解 卷1:协议》

【2】《车载以太网权威指南》

【3】《RFC 793文档》

 

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

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

相关文章

2025年10月北京商业工装设计公司推荐榜单:权威评测与选择指南

作为企业决策者或项目负责人,选择一家合适的商业工装设计公司往往关乎办公环境的效能提升与品牌形象塑造。在北京这样的一线城市,商业工装设计市场呈现专业化、细分化的趋势,企业用户通常面临资质参差不齐、服务标准…

2025年10月北京商业工装设计公司评价指南:权威排行与选择建议

作为企业负责人或项目管理者,当您需要为办公空间、商业场所进行装修改造时,选择一家可靠的商业工装设计公司至关重要。北京作为国际化大都市,商业工装设计市场呈现专业化、细分化的趋势。根据行业权威数据显示,202…

2025年10月北京商业工装设计公司推荐榜单与选择指南

随着商业环境的不断升级和企业对办公空间功能性与美学要求的提升,北京地区的商业工装设计需求持续增长。许多企业管理者、创业团队或物业持有者面临空间规划不合理、施工周期延误、成本控制困难等常见问题。根据行业调…

【日记】好耶!是新电脑!(3959 字)

正文这两天降温好快。也是国庆后。总让我想起那段时间。这两天一直在忙很多很多事情。没什么时间写日记。不能说快忙完了,只能说还早得很呢……第一件,最主要也最花时间,配了一台电脑。应该在之前的日记当中写过,主…

详细介绍:网络爬虫技术规范与应用指南系列(xc—1)

pre { white-space: pre !important; word-wrap: normal !important; overflow-x: auto !important; display: block !important; font-family: "Consolas", "Monaco", "Courier New", …

MongoDB到关系型数据库:JSON字段如何高效转换? - 实践

pre { white-space: pre !important; word-wrap: normal !important; overflow-x: auto !important; display: block !important; font-family: "Consolas", "Monaco", "Courier New", …

2025年GEO优化公司推荐榜:深圳艺果传媒五星领跑!多平台本地化适配 + 数据驱动,3 家企业凭细分优势显实力

随着 2025 年企业 “本地化获客” 需求持续攀升,GEO 优化(基于地理位置的搜索引擎优化)成为线下门店、本地服务类企业精准触达目标用户的核心手段。综合服务覆盖度、优化效果、数据支撑能力及用户反馈,GEO 优化公司…

2025年值得关注的温室大棚厂家企业推荐:技术与服务双优之选,蔬菜大棚,花卉大棚,单栋大棚厂家推荐

在农业现代化加速推进的背景下,大棚设施作为保障高效农业生产的核心装备,其品质与技术含量直接影响种植效益。经过对行业口碑、技术实力、服务覆盖等多维度考察,筛选出五家各有优势的大棚工程企业,供从业者参考。重…

从环保到美学:2025年艺术涂料厂家的消费逻辑与行业进化,意大利进口艺术涂料,进口艺术涂料厂家推荐

随着家居消费升级,艺术涂料凭借肌理质感与环保属性成为墙面装修新选择,但市场中 “概念营销”“施工翻车” 等问题也让消费者困惑。本文从需求定位、性能核验、行业趋势三个维度,解析艺术涂料的选购核心逻辑,呈现绿…

2025年矿物铸件厂家推荐榜:南通盟鼎公司五星突围!35000 吨产能覆盖多领域设备床身,3 家企业凭高精 / 耐腐 / 高性价比筑品质根基

随着数控机床、激光设备、半导体装备等领域对床身稳定性、减震性及精度保持性要求不断提升,矿物铸件凭借高刚性、低振动衰减率等优势,成为设备床身核心材质。2025 年,综合产能规模、技术实力、应用覆盖度及用户反馈…

2025年上海装修公司权威推荐榜:老房翻新/毛胚改造/局部装修/设计施工/现代简约/奶油法式/全包半包/自住出租/婚房公寓/别墅大宅/办公室餐饮装修

2025年上海装修公司权威推荐榜:老房翻新/毛胚改造/局部装修/设计施工/现代简约/奶油法式/全包半包/自住出租/婚房公寓/别墅大宅/办公室餐饮装修 随着上海城市化进程的不断深入,建筑装修行业正经历着前所未有的变革。…

2025密集型/智能/高容量密集型/防潮防腐/多层抽屉式/实验室/切片蜡块柜公司推荐榜:北京中宝元五星领跑,科研样本安全储存有方案,2 家企业各具特色

随着科研领域样本研究不断深入,切片蜡块作为样本保存的重要载体,对专用储存设备切片蜡块柜的安全性、空间利用率及环境适应性要求日益提高。2025 年,综合产品性能、 用户反馈与场景适配度,切片蜡块柜行业推荐榜正式…

2025年不锈钢铸造厂家推荐榜:兴化德邺五星突围!800 吨年产量适配多场景,3 家企业凭精密 / 耐腐 / 高性价比筑品质根基

随着机械制造、化工设备、食品加工等领域对零部件耐锈蚀、高强度的需求提升,不锈钢铸造件因材质特性成为核心适配部件。2025 年,综合产能规模、产品精度、应用适配度及用户反馈,不锈钢铸造厂家推荐榜正式发布,兴化…

2025年三防漆源头厂家推荐榜:苏州拓尔迈公司五星引领,多企业凭技术与服务彰显行业价值

随着电子设备在各领域的广泛应用,对防潮、防盐雾、防霉菌的三防漆需求持续攀升。2025 年,一批技术过硬、服务优质的三防漆企业脱颖而出,其中苏州拓尔迈电子科技有限公司以全维度实力斩获五星推荐,另有 4 家企业凭借…

2025广告策划/营销策划/电商/餐饮/食品/化妆品/美妆/护肤品/建材/家居/品牌策划领域公司/机构推荐榜:上海物心品牌策划领衔,多企业助力品牌价值升级

在消费市场竞争日益激烈的环境下,品牌策划作为企业塑造差异化形象、传递核心价值的关键环节,直接影响产品市场接受度与用户粘性。为展现品牌策划领域优质企业实力,本次 2025 推荐榜聚焦上海及周边区域,结合企业策划…

在java中使用二维数组保存颜色值

在java中使用二维数组保存颜色值int colors[][] = {{0,0,0},{127, 127, 127},}; public void setColor() {for(int i=0;i<128;i++) {color = Color.rgb(colors[i][0],color[i][1],colors[i][2]); } }

装修石材藏辐射?海鲜怕核污染?核辐射检测选对才有用,正点原子ND1核辐射检测仪到手,精度够硬,居家户外都能测!

装修石材藏辐射?海鲜怕核污染?核辐射检测选对才有用,正点原子ND1核辐射检测仪到手,精度够硬,居家户外都能测! 当装修选石材担心辐射超标、网购海鲜顾虑核污染、户外探险需要环境预警时,一款靠谱的核辐射检测仪就…

forbushDecrease 项目首次同步到 GitHub 问题总结

forbushDecrease 项目首次同步到 GitHub 问题总结 📋 概述 2025-10-29,首次将本地 forbushDecrease 项目同步到 GitHub,过程中遇到多个问题,最终通过 git filter-branch 成功解决。🔴 遇到的主要问题 1. HTTP 4…

QML学习笔记(二十二)QML的TextInput - 实践

pre { white-space: pre !important; word-wrap: normal !important; overflow-x: auto !important; display: block !important; font-family: "Consolas", "Monaco", "Courier New", …

C++内联函数inline及与宏使用的比较

一、内联函数inline常规的函数调用,会创建一个新的函数调用栈帧,并跳转到函数定义处执行,结束后再释放栈空间(栈内存)返回调用处。即一个函数要在被另一个函数调用的时候,才有生命,才会为其准备对应的内存空间,…