13-TCP 协议(FIN_WAIT2)

转载请注明出处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 状态的。