【1】 time_wait的作用:
TIME_WAIT状态存在的理由:
1)可靠地实现TCP全双工连接的终止
在进行关闭连接四次挥手协议时,最后的ACK是由主动关闭端发出的,如果这个最终
的ACK丢失,服务器将重发最终的FIN,因此客户端必须维护状态信息允许它重发最
终的ACK。如果不维持这个状态信息,那么客户端将响应RST分节,服务器将此分节
解释成一个错误(在java中会抛connection -reset的SocketException)。因而,
要实现TCP全双工连接的正常终止,必须处理终止序列四个分节中任何一个分节的
丢失情况 ,主动关闭的客户端必须维持状态信息进入TIME_WAIT状态。
2)允许老的重复分节在网络中消逝
TCP分节可能由于路由器异常而“迷途”,在迷途期间,TCP发送端可能因确认超时而重
发这个分节,迷途的分节在路由器修复后也会被送到最终目的地,这个原来的迷途分节
就称为lost duplicate。在关闭一个TCP连接后,马上又重新建立起一个相同的IP地址和
端口之间的TCP连接,后一个连接被称为前一个连接的化身(incarnation),那么有可能
出现这种情况,前一个连接的迷途重复分组在前一个连接终止后出现,从而被误解成从
属于新的化身。为了避免这个情况,TCP不允许处于TIME_WAIT状态的连接启动一个新
的化身,因为TIME_WAIT状态持续2MSL,就可以保证当成