TCP的TIME_WAIT作用与优化

TIME_WAIT的作用

发生在TCP连接的四次挥手阶段,当服务器发送结束请求之后,客户端表示收到请求发出回复,之后就到了TIME_WAIT状态。在这个状态客户端会等待2MSL后连接释放大家注意这个是MSL,MSL(全名:Max
Segment Lifetime)是数据包在网络中的最大生存时间,防止客户端的确认数据的丢失,保证全双工连接的可靠释放。

但是这个时间很长,严重影响了连接的效率。在面试的时候就被问,如何解决这个问题,第一反应就是,这个问题还能解决??以下是学习的笔记。

TIME_WAIT的优化方案

在大量连接的环境中可能会出现由于TIME_WAIT等待时间较长,占用TCP的链接队列,导致新的服务和消息进入不可用,有以下两种解决方案

快速回收【不推荐】

Linux将TIME_WAIT的等待时间2MSL给降低到Retrans时间就释放,但是榆次同时为了避免新建立的链接产生危险:

  • 收到FIN终止包
  • 被之前的链接劫持

TIME_WAIT快速回收在Linux上通过net.ipv4.tcp_tw_recycle启用,由于其根据时间戳来判定,所以必须开启TCP时间戳才有效。 建议:如果前端部署了三/四层NAT设备,尽量关闭快速回收,以免发生NAT背后真实机器由于时间戳混乱导致的SYN拒绝问题。

参数优化<

你可能感兴趣的:(计算机网络,TCP/IP,计算机网络)