在网络编程中,只有主动发起关闭连接动作的一方才会出现TIME_WAIT状态。
TIME_WAIT状态的意义在于:
- 确保被动关闭方能够正常关闭。
- 确保迷走报文能够正常丢弃,因为如果立即关闭并且释放端口,这个端口就有可能会立即被新的连接占用,那旧的迷走报文就有可能被新的连接接收,就可能出现问题。
TIME_WAIT状态的影响在于:
- 占用内存资源,这个影响不大,基本可以忽略。
- 占用端口,即占用tcp连接数,解决方法,使用net.ipv4.tcp_tw_reuse选项,但是有个前提,需要打开对TCP时间戳的支持,即设置net.ipv4.tcp_timestamps=1,默认情况下应该就是这个值。