0
  • 聊天消息
  • 系统消息
  • 评论与回复
登录后你可以
  • 下载海量资料
  • 学习在线课程
  • 观看技术视频
  • 写文章/发帖/加入社区
会员中心
创作中心

完善资料让更多小伙伴认识你,还能领取20积分哦,立即完善>

3天内不再提示

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

北汇信息POLELINK 2025-10-22 10:07 次阅读
加入交流群
微信小助手二维码

扫码添加小助手

加入工程师交流群

d07aa460-aeeb-11f0-8ce9-92fbcf53809c.png

作者 | 雨田

小编 | CACTUS


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


d0914986-aeeb-11f0-8ce9-92fbcf53809c.png

TCP 协议概念


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

d0a041f2-aeeb-11f0-8ce9-92fbcf53809c.png


d0adc4bc-aeeb-11f0-8ce9-92fbcf53809c.png

TCP报文结构


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

d0b7aff4-aeeb-11f0-8ce9-92fbcf53809c.png

端口号:占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数据示例

d0c4af88-aeeb-11f0-8ce9-92fbcf53809c.png


d0d1f472-aeeb-11f0-8ce9-92fbcf53809c.png

TCP连接建立与终止


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

1.三次握手

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

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

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


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

d0df87a4-aeeb-11f0-8ce9-92fbcf53809c.png


2.四次挥手

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

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

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

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


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

d0ec88dc-aeeb-11f0-8ce9-92fbcf53809c.png

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

d0f78d40-aeeb-11f0-8ce9-92fbcf53809c.png

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报文;


d10545e8-aeeb-11f0-8ce9-92fbcf53809c.png

TCP的重要机制


1.确认应答与超时重传

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


如下图所示:

d11298d8-aeeb-11f0-8ce9-92fbcf53809c.png

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


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

如下图所示:

d11fb19e-aeeb-11f0-8ce9-92fbcf53809c.png


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

如下图所示:

d12eb2ac-aeeb-11f0-8ce9-92fbcf53809c.png

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


2.滑动窗口机制

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

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


如下图所示:

d15834b0-aeeb-11f0-8ce9-92fbcf53809c.png

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


如下图所示:

d164725c-aeeb-11f0-8ce9-92fbcf53809c.png


客户端滑动窗口:

d16ea812-aeeb-11f0-8ce9-92fbcf53809c.png


3.拥塞控制机制

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

(1)慢启动

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

如下图所示:

d179f9a6-aeeb-11f0-8ce9-92fbcf53809c.png

(2)拥塞避免

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

工作过程下图所示:

d1890a40-aeeb-11f0-8ce9-92fbcf53809c.png

在该图中,设置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,此时会认为某一报文段丢失并立刻进行重传而不需要等待超时重传的时间,这种策略称为快速重传算法。

如下图所示:

d1951bdc-aeeb-11f0-8ce9-92fbcf53809c.png

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,进入拥塞避免阶段。

d1a108e8-aeeb-11f0-8ce9-92fbcf53809c.png


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文档》


声明:本文内容及配图由入驻作者撰写或者入驻合作网站授权转载。文章观点仅代表作者本人,不代表电子发烧友网立场。文章及其配图仅供工程师学习之用,如有内容侵权或者其他违规问题,请联系本站处理。 举报投诉
  • 数据传输
    +关注

    关注

    9

    文章

    2077

    浏览量

    67177
  • TCP
    TCP
    +关注

    关注

    8

    文章

    1418

    浏览量

    83033
  • 车载以太网
    +关注

    关注

    19

    文章

    256

    浏览量

    23946
收藏 人收藏
加入交流群
微信小助手二维码

扫码添加小助手

加入工程师交流群

    评论

    相关推荐
    热点推荐

    TCP协议保证数据传输可靠性的方式主要有什么

    的必要性(1)可靠地实现了TCP全双工连接的终止(2)允许老的重复分节在网络中的消逝(为什么需要2***)6、流量控制7、拥塞控制TCP协议保证数据
    发表于 12-22 08:03

    GPRS网络上数据传输协议之讨论

    摘要:本文将UDP与TCP两种协议进行对比,从可靠性、适用性、资费等方面深入讨论在GPRS网络上,数据传输
    发表于 03-11 13:28 1517次阅读
    GPRS网络上<b class='flag-5'>数据传输</b><b class='flag-5'>协议</b>之讨论

    tcp ip 数据传输

    tcp ip 数据传输 现有的许多具有串口管理功能的设备不能进行联网的管理和数据存取,我们可以利用先进的TCP/IP技术和管理方式对
    发表于 12-25 12:59 1189次阅读

    TCP/IP协议单片机在网络通信中的数据传输技术

    介绍了嵌入式TCP/IP协议单片机在网络通信中的数据传输技术。将TCP/IP协议嵌入式单片机中,借助网卡芯片CS8900实现了单片机在局域网
    发表于 04-16 22:04 4756次阅读
    <b class='flag-5'>TCP</b>/IP<b class='flag-5'>协议</b>单片机在网络通信中的<b class='flag-5'>数据传输</b>技术

    tcp_ip 协议讲座:介绍数据传输

    介绍了tcp协议数据传输的问题(交互式数据传输,批量数据传输,流量控制,拥塞避免)
    的头像 发表于 07-03 11:05 4047次阅读
    <b class='flag-5'>tcp</b>_ip <b class='flag-5'>协议</b>讲座:介绍<b class='flag-5'>数据传输</b>

    消息协议如何提高数据传输可靠

    串行端口是PIC与其他设备通信的最简单方法之一。但是,事件串行端口存在缺陷,因此在本教程中,我们将了解消息协议如何提高数据传输可靠性。
    的头像 发表于 08-01 16:48 3689次阅读

    udp是什么协议 TCP与UDP的区别

    TCP协议提供可靠数据传输,UDP协议提供尽量高效的数据传输
    的头像 发表于 06-26 17:47 1.2w次阅读

    如何实现MQTT协议数据传输

    如何实现MQTT协议数据传输? 随着物联网技术的不断发展,越来越多的设备和应用需要实现互联互通。而MQTT作为一种轻量级的发布/订阅消息传输协议,在物联网领域应用广泛,成为了许多设备之
    的头像 发表于 11-15 17:23 1736次阅读

    工业控制领域基于TCP/IP的数据传输方案

    电子发烧友网站提供《工业控制领域基于TCP/IP的数据传输方案.pdf》资料免费下载
    发表于 11-16 10:52 0次下载
    工业控制领域基于<b class='flag-5'>TCP</b>/IP的<b class='flag-5'>数据传输</b>方案

    让“可靠”变得“更快更安全”的数据传输协议:SCTP

    SCTP(Stream Control Transmission Protocol,流控传输协议)的出现,并不是万丈高楼平地起,而是站在TCP这个巨人肩膀上,让数据传输从“
    的头像 发表于 12-28 17:25 2530次阅读
    让“<b class='flag-5'>可靠</b>”变得“更快更安全”的<b class='flag-5'>数据传输</b><b class='flag-5'>协议</b>:SCTP

    DTU的多种协议,解锁数据传输的无限可能

    DTU,即数据传输单元,是一种在物联网(IoT)网络中常用的设备,主要用于在传感器和智能设备之间进行数据传输。DTU使用多种协议来实现这一目标,这些协议不仅提高了
    的头像 发表于 03-01 11:00 1734次阅读
    DTU的多种<b class='flag-5'>协议</b>,解锁<b class='flag-5'>数据传输</b>的无限可能

    无线模块通过TCP/IP协议实现与PC端的数据传输解析

    无线网络中进行数据传输的设备。它通常集成了网络接口层、传输层和应用层等多个功能模块,以支持TCP/IP等网络通信协议TCP/IP
    的头像 发表于 06-15 16:16 990次阅读

    socket 数据传输效率提升技巧

    在现代网络应用中,数据传输效率是衡量系统性能的关键指标之一。对于使用socket进行数据传输的应用,优化传输效率不仅可以提升用户体验,还能降低成本。 1. 选择合适的传输
    的头像 发表于 11-12 14:34 1615次阅读

    PCIe数据传输协议详解

    、网卡和声卡等,以实现高效的数据传输。以下是对PCIe数据传输协议的介绍: 一、PCIe协议的基本概念 PCIe协议定义了一
    的头像 发表于 11-26 16:12 5571次阅读

    MPU数据传输协议详解

    协议的基本概念 数据传输协议定义了数据在MPU和外部设备之间传输的方式,包括数据的格式、同步方式
    的头像 发表于 01-08 09:37 1426次阅读