Linux网络编程(TCP状态转换关系)

2023-08-17 20:38:26


前言

本篇文章来讲解一下TCP的状态转换关系,学习这个状态转换关系对于我们深入了解网络编程是非常有必要的。

一、TCP状态转换图

在这里插入图片描述

二、TCP连接状态转换解析

客户端状态转换:

1.CLOSED -> SYN-SENT:当客户端尝试与服务器建立连接时,客户端从CLOSED状态转换到SYN-SEND状态。此时客户端发送SYN(同步)包,表示请求建立连接,并等待服务器的确认。

2.当服务器确认后,发送SYN(同步)包和ACK(确认包)给客户端,客户端依然保持SYN-SEND状态,当客户端接收确认后会发送ACK(确认包)给服务器。

3.服务器接收到ACK(确认包)后就可以进行数据的通信了。此时客户端和服务器都进入了ESTABLISHED状态。

服务器状态转换:

1.CLOSED -> LISTEN:当服务器开始监听传入的连接请求时,服务器从CLOSED状态转换到LISTEN状态。此时服务器准备接收客户端的连接请求。

2.LISTEN -> SYN-RECEIVED:当服务器接收到客户端的连接请求后,服务器从LISTEN状态转换到SYN-RECEIVED状态。服务器发送确认(ACK)包给客户端,并等待客户端确认。

3.SYN-RECEIVED -> ESTABLISHED:当服务器收到客户端的确认(ACK)后,服务器从SYN-RECEIVED状态转换到ESTABLISHED状态。此时连接已经建立,双方可以开始进行数据传输。
在这里插入图片描述

三、TCP断开状态转换解析

在这里插入图片描述

客户端状态转换:
1.ESTABLISHED -> FIN-WAIT-1:当客户端决定终止连接时,客户端从ESTABLISHED状态转换到FIN-WAIT-1状态。客户端发送FIN(终止)包,表示请求终止连接,并等待服务器的确认。

2.FIN-WAIT-1 -> FIN-WAIT-2:当客户端收到服务器的确认(ACK)后,客户端从FIN-WAIT-1状态转换到FIN-WAIT-2状态。此时客户端等待服务器发送确认终止连接的请求。

3.FIN-WAIT-2 -> TIME-WAIT:当客户端收到服务器的确认终止连接的请求后,客户端从FIN-WAIT-2状态转换到TIME-WAIT状态。此时客户端进入等待状态,等待一段时间后才进入CLOSED状态。

4.TIME-WAIT -> CLOSED:经过一段时间的等待后,客户端从TIME-WAIT状态转换到CLOSED状态,表示连接彻底关闭。

服务器状态转换:

1.ESTABLISHED -> CLOSE-WAIT:当服务器决定终止连接时,服务器从ESTABLISHED状态转换到CLOSE-WAIT状态。服务器发送FIN(终止)包给客户端,并等待客户端确认。

2.CLOSE-WAIT -> LAST-ACK:当服务器收到客户端的确认(ACK)后,服务器从CLOSE-WAIT状态转换到LAST-ACK状态。此时服务器等待客户端发送确认终止连接的请求。

3.LAST-ACK -> CLOSED:当服务器收到客户端的确认终止连接的请求后,服务器从LAST-ACK状态转换到CLOSED状态。表示连接彻底关闭。

四、为什么需要有2MLS时长

2MSL(Maximum Segment Lifetime)是指TCP连接在关闭时,需要等待2倍的报文段最大存活时间,即两倍的报文最长生存时间来回收相关资源。这是TCP协议中设定的一个等待时间,用于确保连接双方都收到彼此的终止请求。

2MSL的存在是为了处理网络上可能存在的延迟、重传和乱序等问题,以确保连接的可靠关闭。在TCP连接关闭过程中,双方会交换终止连接的请求和确认,以保证数据传输的完整性和正确性。2MSL的设定时间可以确保在该时间段内,网络中所有与这个连接相关的报文段都能够被丢弃。

具体原因如下:

1.确保彻底关闭连接:2MSL的存在可以确保客户端和服务器都能收到对方的终止请求和确认,避免由于网络上的延迟或乱序等问题导致连接没有完全关闭。在2MSL的时间内,任何已失效的报文段都会被丢弃,从而确保连接彻底关闭。

2.确保旧连接不与新连接冲突:在TCP连接关闭后的一段时间内,可能会出现与之前关闭的连接相关的延迟报文段。如果新的连接使用了之前关闭连接时所用的端口号,这些延迟报文段可能会被错误地接收和处理。通过等待2MSL的时间,确保了旧连接中的所有报文段都已过期,不会与新的连接发生混淆。

3.防止延迟报文段对新连接的影响:在TCP连接关闭后,可能会出现延迟到达的报文段,这些报文段可能是在连接关闭前的最后一瞬间被发送出去的。如果新的连接使用的端口号与这些延迟报文段的源端口号冲突,可能导致报文段被误认为是新连接的一部分而产生错误。2MSL的等待时间可以确保所有延迟报文段都被丢弃,不会对新的连接产生干扰。

总结

本篇文章就讲解到这里,这部分的知识需要大家好好理解和消化。

更多推荐

阿里云——云服务器基础运维与管理

作者简介:一名云计算网络运维人员、每天分享网络与运维的技术与干货。座右铭:低头赶路,敬事如仪个人主页:网络豆的主页​​​​​目录写在前面学习目标:一.3个理由拥抱云服务器1.什么是云服务器2.使用云服务的好处3.推荐云服务的理由二.1分钟快速定制ECS1.开通ECS步骤:ECS概念三.3分钟便捷管理ECS1.便捷管理,

扩散模型在图像生成中的应用:从真实样例到逼真图像的奇妙转变

一、扩散模型扩散模型的起源可以追溯到热力学中的扩散过程。热力学中的扩散过程是指物质从高浓度往低浓度的地方流动,最终达到一种动态的平衡。这个过程就是一个扩散过程。在深度学习领域中,扩散模型(diffusionmodels)是深度生成模型中新的SOTA。扩散模型在图片生成任务中超越了原SOTA:GAN,并且在诸多应用领域都

06-数据库检索:如何使用B-树对海量磁盘数据建立索引?

06-数据库检索:如何使用B-树对海量磁盘数据建立索引?你好,我是陈东。在基础篇中,我们学习了许多和检索相关的数据结构和技术。但是在大规模的数据环境下,这些技术的应用往往会遇到一些问题,比如说,无法将数据全部加载进内存。再比如说,无法支持索引的高效实时更新。而且,对于复杂的系统和业务场景,我们往往需要对基础的检索技术进

Web服务(Web Service)

简介Web服务(WebService)是一种Web应用开发技术,用XML描述、发布、发现Web服务。它可以跨平台、进行分布式部署。Web服务包含了一套标准,例如SOAP、WSDL、UDDI,定义了应用程序如何在Web上实现互操作。Web服务的服务端和客户端使用简单对象访问协议(SOAP)进行通信,通信的双方可以使用不同

Jmeter系列-监听器Listeners的介绍(9)

简介用来动态的监控Jmeter执行测试的过程,实时查看测试结果。JMeter监听器查看结果树查看结果树,显示取样器请求和响应的细节以及请求结果,包括消息头,请求的数据,响应的数据,方便接口调试,问题定位。参数介绍名称:控制器的描述性名称,显示在左边节点上,并用于命名事务注释:控制器注释信息,非必填项文件名:载入文件名L

C++设计模式_05_Observer 观察者模式

接上篇,本篇将会介绍C++设计模式中的Observer观察者模式,和前2篇模板方法TemplateMethod及Strategy策略模式一样,仍属于“组件协作”模式。Observer在某些领域也叫做Event。文章目录1.动机(Motivation)2.代码演示Observer观察者模式2.1常用处理方法2.1.1Ma

链动2+1:一种创新的电商分销模式

电商行业是一个竞争激烈的市场,要想在众多的平台和品牌中脱颖而出,就需要有一些创新的策略和模式。链动2+1就是一种新兴的电商分销模式,它主要是利用社交网络和团队合作,实现快速的销量增长和用户增长。链动2+1的基本原理链动2+1的基本原理是将用户分成两个身份:代理和老板。用户消费礼包成为代理身份,可以享受直推的奖励收益,下

富金通管理U盾不轻松,用了USB Server如沐清风

富金通网络科技服务有限公司是一家专注于金融科技服务的公司,因为拥有多个银行账户,也就有了U盾数量过多、管理极为不便的问题,具体表现为易丢失、易损坏、操作繁琐、需要插拔、不便携带、威胁金融安全等。近期,朝天椒USBServer通过硬件加软件的解决方案,为富金通顺利解决了上述难题,并再次验证了朝天椒USBServer这一可

软件工程评级B-,有大量调剂名额。北京联合大学考情分析

北京联合大学(B-)考研难度(☆)内容:23考情概况(拟录取和复试分析)、院校概况、23专业目录、23复试详情、各专业考情分析、各科目考情分析。正文1239字,预计阅读:3分钟2023考情概况北京联合大学计算机相关各专业复试和拟录取分析:院校概况北京联合大学位于北京市,是北京市属综合性大学。在第四轮学科评估中,北京联合

土耳其市场最全开发攻略

2023年6月1日起,亚马逊土耳其站开始正式面向中国卖家试运营。土耳其这个古丝绸之路西域的重要节点,再一次吸引了来自东方众商家的目光。土耳其是一个著名的贸易中心,向世界提供许多出口产品。土耳其总统埃尔多安指出,根据调整后的数据,土耳其经济在今年第一季度增长了3.9%,第二季度增长了3.8%,他说:“因此,土耳其的经济增

机器学习西瓜书+南瓜书吃瓜教程第三章学习笔记

本次学习为周老师的机器学习西瓜书+谢老师南瓜书+Datawhale视频视频地址下面为本人的学习笔记,最近很忙还没学多少,之后补!!!u1s1,边看视频边自己手推一遍真的清楚很多,强烈推荐自己手推虽然花时间,但真的很有用很清晰线性模型1、基本形式2、最小二乘估计&&极大似然估计3、求解w和b4、举例机器学习是想要通过现有

热文推荐