当前位置:首页 > 通信技术 > 通信技术
[导读]把TCP首部想象成一封信的信封,每个字段对应信封上的不同信息。源端口和目的端口就像寄信人和收信人的门牌号,序列号和确认号相当于书信的页码编号和回执编号。数据偏移量可以比作信封上留出的贴邮票位置,保留字段就像信封上预留的空白区域。

源端口号 (Source Port - 16 bits)

寄件人的门牌号。 发送数据的应用程序在发送方电脑上的“门牌号”(端口号)。就像快递单上的寄件人地址,接收方知道这个数据是从哪个程序发来的,好把回信发给正确的“门牌号”。

目的端口号 (Destination Port - 16 bits)

收件人的门牌号。 接收数据的应用程序在接收方电脑上的“门牌号”(端口号)。就像快递单上的收件人地址,接收方的网络设备(TCP/IP协议栈)根据这个门牌号,把数据包交给正确的程序(比如浏览器)。

序列号 (Sequence Number - 32 bits)

包裹的页码编号(从第几页开始)。 想象你要邮寄一本很厚的书,不得不拆成很多个小包裹。这个编号告诉你当前包裹里装的是这本书的第几页(或者第几块数据), 接收方收到一堆零散的包裹(数据包)后,能按照这个编号把它们按顺序拼回那本完整的书(原始数据)。同时,它也用于识别重复的包裹或丢失的包裹(编号不连续了)。

确认号 (Acknowledgment Number - 32 bits)

回执单上的“下一张期待页码”。 当收件人收到包裹并检查无误后,会发一个回执给寄件人。回执上写着:“我已收到到第 X 页(确认号)为止的所有包裹了,请寄下一页(X+1)给我吧!”,确认对方已收到数据,并告诉对方接下来希望收到哪个编号的数据包。这是 TCP 可靠传输的核心机制!只有当 ACK 标志位(见下面)为 1 时,这个字段才有效。

数据偏移 (Data Offset / Header Length - 4 bits)

这张“发货单”本身有多长? 单位是 4 字节。比如,固定部分 20 字节就是 5 (20/4=5),如果加上选项部分,这个值会变大,告诉接收方,“发货单”(TCP 首部)在哪里结束,后面真正的“货物”(应用层数据)从哪里开始。

保留 (Reserved - 6 bits)

预留的空白格子。 暂时没用,填 0。留给未来可能的新功能,控制位 (Flags - 6 bits, 每个占1) - 最重要的部分之一!这是 6 个独立的开关(标志位),每个开关要么开(1)要么关(0),表示这个 TCP 包的特殊意图:

URG (Urgent):紧急开关。 “包裹里有加急物品!” 当它打开(1)时,表示这个数据包里有需要优先处理的紧急数据。这时紧急指针字段(见下面)才有效。现在用的比较少。

ACK (Acknowledgment):确认开关。 “这是个回执单!” 当它打开(1)时,表示这个包是用来确认对方发来的数据的。这时确认号字段才有效。绝大多数 TCP 包(除了第一个握手包)这个开关都是开着的!

PSH (Push):推送开关。 “别攒着了,赶紧送货上门!” 发送方打开(1),要求接收方收到这个包后,立刻把数据交给上层应用程序,不要等缓冲区满了再交。接收方打开(1),表示当前数据包里的数据是应用程序要求立即上交的。

RST (Reset):重置开关。 “出大问题了!赶紧断线重连!” 当连接出现严重错误(如端口未打开、连接异常)时,会发送一个打开(1)RST 开关的包,强制立即终止连接。

SYN (Synchronize):同步/连接请求开关。 “你好!我想和你建立连接。” 在建立连接(三次握手)时使用。第一次握手(客户端发起请求)和第二次握手(服务器响应)时,这个开关是开着的(1)。它用来初始化序列号。

FIN (Finish):结束开关。 “我的东西发完了,再见!” 用于正常关闭连接(四次挥手)。当一方数据发送完毕,就会发送一个打开(1)FIN 开关的包,表示它要关闭自己这一侧的连接。

窗口大小 (Window Size - 16 bits)

收件人的仓库还有多大空位? 接收方告诉发送方:“我现在最多还能接收这么多字节的数据(窗口大小值),你别发多了!” 这个值在通信过程中会动态变化,TCP 流量控制的核心机制!防止发送方发得太快,把接收方的缓冲区(仓库)塞爆。 

校验和 (Checksum - 16 bits)

包裹的防伪封条/完整性标签。 发送方根据整个 TCP 包(首部+数据)的内容计算出一个“指纹”(校验和)。接收方收到后,按照同样的算法再算一遍,接收方比较自己算的“指纹”和包裹上贴的“指纹”(校验和字段)。如果不一样,说明包裹在运输过程中损坏(比特位出错了)或者被篡改了,这个包就会被丢弃。保证数据传输的完整性。 

紧急指针 (Urgent Pointer - 16 bits)

加急物品在包裹里的位置。 只有当 URG 开关打开(1) 时才有效。它指向当前数据包中紧急数据最后一个字节的位置,告诉接收方应用程序,从包的开头到紧急指针指向的位置是紧急数据,需要优先处理。

选项 (Options - 长度可变,0-40字节)

特殊要求/增值服务。 可选的附加信息,用于一些高级功能。常见的选项有:

最大报文段长度 (MSS): 在建立连接(握手)时,双方协商每个 TCP 包最多能装多少数据(不包括首部)。避免在传输路径中被分片。

窗口缩放因子 (Window Scale): 因为基本窗口大小字段只有 16 位,最大只能表示 65535 字节。这个选项允许双方协商一个缩放因子,将实际窗口大小放大(比如左移若干位),用于高速网络。

时间戳 (Timestamp): 用于更精确地计算往返时间和防止序列号回绕,提供 TCP 的扩展功能,优化性能或增加特性。

填充 (Padding - 长度可变)

填空格,凑整。 因为 TCP 首部长度必须是 32 (4 字节) 的整数倍。如果选项部分的长度不是 4 字节的整数倍,就需要在最后用 0 填充一些位,把整个首部长度凑齐,确保首部对齐,便于硬件处理。

 

本站声明: 本文章由作者或相关机构授权发布,目的在于传递更多信息,并不代表本站赞同其观点,本站亦不保证或承诺内容真实性等。需要转载请联系该专栏作者,如若文章内容侵犯您的权益,请及时联系本站删除。
换一批
延伸阅读

9月2日消息,不造车的华为或将催生出更大的独角兽公司,随着阿维塔和赛力斯的入局,华为引望愈发显得引人瞩目。

关键字: 阿维塔 塞力斯 华为

加利福尼亚州圣克拉拉县2024年8月30日 /美通社/ -- 数字化转型技术解决方案公司Trianz今天宣布,该公司与Amazon Web Services (AWS)签订了...

关键字: AWS AN BSP 数字化

伦敦2024年8月29日 /美通社/ -- 英国汽车技术公司SODA.Auto推出其旗舰产品SODA V,这是全球首款涵盖汽车工程师从创意到认证的所有需求的工具,可用于创建软件定义汽车。 SODA V工具的开发耗时1.5...

关键字: 汽车 人工智能 智能驱动 BSP

北京2024年8月28日 /美通社/ -- 越来越多用户希望企业业务能7×24不间断运行,同时企业却面临越来越多业务中断的风险,如企业系统复杂性的增加,频繁的功能更新和发布等。如何确保业务连续性,提升韧性,成...

关键字: 亚马逊 解密 控制平面 BSP

8月30日消息,据媒体报道,腾讯和网易近期正在缩减他们对日本游戏市场的投资。

关键字: 腾讯 编码器 CPU

8月28日消息,今天上午,2024中国国际大数据产业博览会开幕式在贵阳举行,华为董事、质量流程IT总裁陶景文发表了演讲。

关键字: 华为 12nm EDA 半导体

8月28日消息,在2024中国国际大数据产业博览会上,华为常务董事、华为云CEO张平安发表演讲称,数字世界的话语权最终是由生态的繁荣决定的。

关键字: 华为 12nm 手机 卫星通信

要点: 有效应对环境变化,经营业绩稳中有升 落实提质增效举措,毛利润率延续升势 战略布局成效显著,战新业务引领增长 以科技创新为引领,提升企业核心竞争力 坚持高质量发展策略,塑强核心竞争优势...

关键字: 通信 BSP 电信运营商 数字经济

北京2024年8月27日 /美通社/ -- 8月21日,由中央广播电视总台与中国电影电视技术学会联合牵头组建的NVI技术创新联盟在BIRTV2024超高清全产业链发展研讨会上宣布正式成立。 活动现场 NVI技术创新联...

关键字: VI 传输协议 音频 BSP

北京2024年8月27日 /美通社/ -- 在8月23日举办的2024年长三角生态绿色一体化发展示范区联合招商会上,软通动力信息技术(集团)股份有限公司(以下简称"软通动力")与长三角投资(上海)有限...

关键字: BSP 信息技术
关闭