C++网络编程之十四TIME_WAIT和CLOSE_WAIT

一、网络通信中的一些铺垫说明

在实际的网络开发中,可能遇到各种各样的问题。这些问题可能千奇百怪,但万变不离其宗。有过TCP/IP开发经验的知道,TCP的通信要通过三次握手和四次挥手来实现通信的连接和断开。而如果在这三次握手和四次挥手过程中如果遇到一些异常,会是什么情况呢?比如三次握手时没有实现完整的握手过程;亦或四次挥手时没有形成完整的挥手过程 。这是从通信底层来看问题,但如果从上层应用看呢?如何将底层的一些问题与上层暴露出来的现象对应起来,这才是重点。
今天就讨论一个比较常见的现象,就是在服务端上有很多TIME_WAIT和CLOSE_WAIT。而在面试中可能就会问题,如果服务端有大量的TIME_WAIT和CLOSE_WAIT,应该怎么解决?

二、TIME_WAIT和CLOSE_WAIT分析

其实要想明白二者处理的方式,就首先要弄明白二者是如何产生的。下面就对TIME_WAIT和CLOSE_WAIT产生的机制进行分析:
1、TIME_WAIT
TIME_WAIT,是主动关闭方收到对方的FIN报文并回应ACK报文,在2MSL(2 倍的 max segment lifetime,最大生存时间,RFC中给出的是2分钟,但实际一般是30秒、1分钟或2分钟)后转到CLOSED状态。当然如果已经在FIN_WAIT_1状态,收到对方的FIN标志和ACK标志的报文时,可略过FIN_WAIT_2状态直接进入TIME_WAIT状态。
那如果此看来,其实TIME_WAIT并没有什么大问题啊?过了2MSL会自动回收。对,实际情况中,一般来说TIME_WAIT也很难对系统产生重大的影响。但仍然有可能在某

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值