简说linux TCPIP 11讲 TIME_WAIT

简说linux TCPIP 11讲

TIME_WAIT

一个数据包在网络中传输的最长时间是 2MSL(发送 MSL  +    等待确认ACK MSL) 
当主动关闭方接收到被动方的FIN+ACK后发出确认ACK后进入TIME_WAIT状态

为什么会有TIME_WAIT状态?
从TCP可靠性讲,主动关闭方必须确认被动关闭方收到最后的ACK。所以必须有一个TIME_WAIT的等待时间
如果最后的ACK被动关闭方没有收到,那么被动关闭方将重新发送FIN+ACK,主动关闭方将重新进入TIME_WAIT状态

为什么是2MSL?
2MSL可以保证  如果最后一个ACK丢失,被动关闭方可以重发FIN+ACK   2MSL= 最后一个ACK发送时间 +  被动关闭方发一个FIN+ACK时间

TIME_WAIT的时间设置
在Linux系统中,MSL = 60 s, 2 * MSL = 120 s,所以一条待关闭的TCP连接会在 TIME_WAIT 状态等待 120秒(2分钟)
刚才说到MSL是一个网络的传输时间,那么说明MSL的时长根据网络情况有所差异。
TIME_WAIT是TCP的一个参数
修改方法:
sysctl -w "net.ipv4.tcp_tw_timeout=[$TIME_VALUE]

符链接:
https://zhuanlan.zhihu.com/p/374135294

你可能感兴趣的:(计算机网络,linux,网络,运维)