三次握手四次挥手之状态

状态有哪些

  1. ESTABLISHED(已建立):在正常的数据传输过程中,连接处于这个状态。双方可以互相发送和接收数据。

  2. FIN_WAIT_1(等待对方的FIN):当客户端发送了关闭请求(FIN),进入这个状态。此时客户端等待来自服务器的确认(ACK)。

  3. CLOSE_WAIT(等待关闭):当服务器收到客户端的关闭请求(FIN),服务器进入这个状态。服务器仍可以发送数据,但不再接收客户端的新数据。

  4. FIN_WAIT_2(等待对方的关闭请求):在这个状态,客户端等待服务器发送自己的关闭请求(FIN)。

  5. TIME_WAIT(等待一段时间):在完成四次挥手后,客户端和服务器都会进入这个状态。它是为了确保网络中滞留的最后一些数据包能够被正确处理和丢弃。这个状态持续一段时间后,连接将被彻底关闭,释放所有资源。该状态不一定需要对方响应,超时未响应自动进入下一状态。

  6. LAST_ACK(等待最后的ACK):在服务器发送自己的关闭请求后,进入这个状态。服务器等待来自客户端的最后一个确认(ACK),确认客户端已收到服务器的关闭请求。该状态同样不一定需要对方响应,超时未响应自动进入下一状态。

  7. CLOSED(已关闭):在TIME_WAIT状态结束后,连接最终处于关闭状态。双方的连接已经完全关闭,不再传输数据。

需要注意的是,每个状态都代表了连接关闭过程中的一个特定阶段。

注意!!!

服务器一直不关闭套接字,而客户端已发送关闭请求

客户端会发生什么?

如果服务器一直不关闭套接字,而客户端已经发送了关闭请求,那么客户端会进入到等待服务器响应的状态,也就是FIN_WAIT_2状态。在这个状态下,客户端会等待服务器发送自己的关闭请求(即发送自己的FIN标志)。

客户端在FIN_WAIT_2状态下会等待一段时间,如果服务器一直没有发送关闭请求,那么客户端可能会超时并认为服务器已经不再响应。在这种情况下,客户端可能会采取一些处理措施,例如终止连接并向应用程序报告连接异常。所以在这个过程中,客户端不会自动退出,而是会经历FIN_WAIT_1、FIN_WAIT_2和TIME_WAIT三个状态后,最终强制断开连接。

这种情况下,客户端和服务器之间的连接并没有正常关闭,而是出现了一种不符合协议规范的状态,可能会导致资源浪费或其他问题。因此,正常情况下,服务器应该在收到客户端的关闭请求后,按照协议规定的步骤发送自己的关闭请求,以确保连接可以正确地关闭并释放相关资源。

为什么会强制退出不等服务器响应呢,想想我们在使用CSDN的时候,你不想用了会等对面服务器准备好了再关网页吗,肯定不会。

服务器会发生什么?

不关闭套接字,会导致服务器一直处于close_wait状态,链接一直在被维护,套接字资源(文件描述符)泄漏导致服务器内的资源一直被占用。所以写代码要记得关文件描述符!!!

主动断开一方完成四次挥手后的动作

无论是服务器还是客户端,TCP规定主动断开的一方都会进入TIME_WAIT状态。虽然进入TIME_WAIT意味着四次挥手已经完成,但进入TIME_WAIT状态不代表就会立即释放资源,会等待一段时间。所以此时如果重启主动断开的一方的进程,我们是无法使用上一次的端口号,因为此时端口号还被上次的链接占用了。

如果服务端挂了,不能等TIME_WAIT状态需要立即重启怎么办

此时服务端是主动关闭的一方

比如双十一期间,大量用户与淘宝服务器建立连接,如果服务端突然挂掉,那就必须得立即重启,因为你要买东西,1秒成交量多少你想想,必然不能让你久等,可此时因为TIME_WAIT状态,端口被上次的连接占用了,那就必须得等该状态结束你才能重新上线。

那怎么办呢?

  • 关闭TCP连接重置:调用setsockopt()函数,可以在CLOSE时发送RST报文强制重置连接,不经过TIME_WAIT。
相关推荐
了一梨6 分钟前
网络编程:UDP Socket
linux·网络协议·udp
云和数据.ChenGuang17 分钟前
F5 Big-IP by SNMP.硬件负载均衡
网络协议·tcp/ip·负载均衡·数据库运维工程师·运维教程
BuffaloBit28 分钟前
5G为何强调“NR”?
网络协议·5g
HyperAI超神经30 分钟前
【TVM 教程】交叉编译与 RPC
网络·人工智能·网络协议·rpc·gpu·编程语言·tvm
老蒋新思维14 小时前
创客匠人:认知即资产 ——AI 时代创始人 IP 知识变现的底层逻辑
网络·人工智能·网络协议·tcp/ip·重构·创始人ip·创客匠人
白驹过隙^^15 小时前
OB-USP-AGENT安装使用方法
数据库·经验分享·网络协议·tcp/ip·github·ssl
sdszoe492216 小时前
IP地址规划与VLSM技术
网络·网络协议·tcp/ip·vlsm·ip地址规划
北京耐用通信17 小时前
耐达讯自动化网关:用Profinet唤醒沉睡的DeviceNet流量计,省下60%改造费!
人工智能·科技·物联网·网络协议·自动化·信息与通信
Running_slave18 小时前
聊聊TCP滑窗的一些有趣“病症”
前端·网络协议·tcp/ip
想用offer打牌19 小时前
一站式了解跨域问题
网络协议·面试·架构