FIN_WAIT_2:
1.半关闭状态。
2.发送断开请求一方还有接收数据能力,但已经没有发送数据能力。
CLOSE_WAIT状态:
1.被动关闭连接一方接收到FIN包会立即回应ACK包表示已接收到断开请求。
2.被动关闭连接一方如果还有剩余数据要发送就会进入CLOSED_WAIT状态。
TIME_WAIT状态:
1.又叫2MSL等待状态。
2.如果客户端直接进入CLOSED状态,如果服务端没有接收到最后一次ACK包会在超时之后重新再 发FIN包,此时因为客户端已经CLOSED,所以服务端就不会收到ACK而是收到RST。所以 TIME_WAIT状态目的是防止最后一次握手数据没有到达对方而触发重传FIN准备的。
3.在2MSL时间内,同一个socket不能再被使用,否则有可能会和旧连接数据混淆(如果新连接和旧 连接的socket相同的话)。