TCP四次挥手终止连接的TIME_WAIT状态
(1)存在TIME_WAIT状态的原因 原因一:保证TCP全双工连接的可靠释放 解析:假设场景为客户端主动向服务器发起断开连接,假如在主动方(客户端)最后一次发送的ACK在网络中丢失,根据TCP的超时重传机制,被动方(服务器)需要重新向客户端发送FIN+ACK,在FIN未达到之前,必须维护这条连接;并且要接收到客户端发出的ACK确认后才能终止连接;如果直接在重传的FIN到达之前而关闭连接,当FIN到达后会促使客户端TCP传输层发送RST重新建立连接,而本质上这是一个正常断开连接的过程。 另一种解释是: 原因二:为了使就得数据包在网络中因过期而失效 (2)TIME_WAIT状态过多有何危害?如何解决TIME_WAIT过多情况? 危害:占用太多资源,阻塞其他正常连接; 解决方法 第二种:修改内核参数来减少time_wait状态? 编辑文件/etc/sysctl.conf,加入以下内容 (3)如果修改修改time_wait的时间有什么影响? 如果修改time_wait的时间会造成上一个连接的数据没有完全接收到,会重建连接错误;另一个是造成新建的连接出现错误,收到不期望收到的数据; 注意:Linux是无法修改tcp的time_wait值的; (4)netstat 命令的使用 netstat -rn 打印路由表信息 文章来源: TCP四次挥手终止连接的TIME_WAIT状态