LISTEN | 被动方 | 等待来自任何远程TCP端点的连接请求。 |
SYN-SENT | 主动方 | 在发送连接请求后,等待匹配的连接请求。(主动方第一次握手之后的状态) |
SYN-RECEIVED | 被动方 | 在收到和发送连接请求后,正在等待确认的连接请求确认。(被动方第二次握手,发送ACK + SYN 之后的状态) |
ESTABLISHED | 双方 | 一个开放的连接,接收到的数据可以传递给用户。这是连接数据传输阶段的正常状态。 |
FIN-WAIT-1 | 主动方 | 等待来自远程TCP的连接终止请求,或先前发送的连接终止请求的确认。(主动方第一次挥手,发送了FIN ,在等被动方发送 ACK 确认) |
FIN-WAIT-2 | 主动方 | 等待来自远程TCP的连接终止请求。(主动方已经收到了被动方发送的ACK 号,在等待被动方发送的FIN 号) |
CLOSE-WAIT | 被动方 | 等待本地用户发送连接终止请求。(被动方接收到了主动方发送的FIN 号,会立刻发送ACK ,但是它仍然需要一段时间来处理自己的事情,close-wait 就是用来干这个的) |
CLOSING | 被动方 | 正在等待来自远程TCP的连接终止请求确认。(实际上是比较少见的,用来应对双方几乎同时关闭连接的场景) |
LAST-ACK | 被动方 | 等待之前发送给远程TCP的连接终止请求的确认(其中包括对其连接终止请求的确认)。(被动方在发送了FIN 报文之后,等待主动断开方发送 ACK 确认的过程,实际上就是最靠近Closed 的一种状态) |
TIME_WAIT | 主动方 | 等待足够的时间,以确保连接上的所有剩余数据包都已过期。(主动断开方在收到了最后一次ACK 号之后,也就是四次挥手全部结束之后,还要等一段时间,确保迷路的包全部死掉) |
CLOSED | 双方 | 关闭 |