time wait 整理

目录

 

 

状态转换图

 

1、谁会进入time wait状态:

主动发起断开连接的一方调用close()函数发送FIN并进入FIN WAIT 1状态,当收到对面反馈的ack之后会进入FIN WAIT2状态。之后收到对面发来的FIN并返回ACK之后会进入time wait状态。

 

2、Time wait状态,socket怎么样?

进入time wait状态之后,socket pair处于不可用状态。需要等待time out那么长的时间之后,处于time wait状态的一方才会进入close状态。

 

3、为什么会有time wait状态?

设置了这一段时间,就不会出现跟下一次连接之间有任何数据的混淆

主动发起关闭的一方在接受到对方发送的fin之后,会进入time wait的状态。因为每一个tcp都需要选择一个报文的最大生存时间。因为数据包会在网络上一定的存活时间,这个存活时间在ip包头有一个8位生存时间(TTL)。Time wait就是确保我发送的数据包要么就是到达了目的地,要么就是超过了生存时间之后被抛弃。他是做这个保证的。这个时间一般是两分钟,这个时间可以修改,一般我们设置为30s。单次的ttl不足以完成这个time wait时间,因为加入最后在生存时间的最后一刻到达了目的端,则目的端会返回一个确认,这个确认也需要一定的时间,所以tim wait的时间一般是两倍的ttl时间。

 

4、Time wait的注意事项

虽然客户端和服务器都可以进入time wait状态,但是最好服务器不要进入这样的状态

 

5、为什么Time wait对服务端的影响比较大,为什么呢?

原因一:资源占用

Socket进入time wait状态时候,操作系统会分配一定的资源去捕捉这个状态,也就是说这个资源还不能被释放,还处于time wait的状态。

原因二:会使得服务器无法使用

假如消息是通过代理服务器获得的,比如vpn,如果这样,很多计算机发出来的消息,是通过一台机器发生中转的。如果服务器发起断开连接,会有大量的端口进入time wait状态,有可能会造成代理服务器无法使用。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值