转载请注明出处:http://blog.csdn.net/q1007729991/article/details/69696055
1. FIN_WAIT2 状态
如果你完成了上一篇文章的实验,你肯定见过了 FIN_WAIT2 状态。
当主动关闭一方进入 FIN_WAIT2 状态时,只要对端还没有发送 FIN 段过来(处于 CLOSE_WAIT 状态,等等再关闭,我还有数据要发送),就会一直停留在这个状态。因此,FIN_WAIT2 状态会非常容易见到。
图1 处于 FIN_WAIT2 状态
很不幸,主动关闭一方有可能永远处于 FIN_WAIT2 状态,只要对方不发送 FIN 段的话(比如对端在 CLOSE_WAIT 状态时突然断电、网线掉了)。
在有些系统实现中,为了防止这种无限 FIN_WAIT2,设置了一个定时器。如果这个连接空闲 10 分钟 75 秒,TCP 将进入 CLOSED 状态。实际上,这是违反协议的,但又未尝不可呢?
2. 总结
- 知道如何进入 FIN_WAIT2 状态
- 知道有些系统是如何处理长期处于 FIN_WAIT2 状态的。