什么是TCP状态

TCP(Transmission Control Protocol,传输控制协议)是一种面向连接的、可靠的、基于字节流的传输层协议,它位于传输层和应用层之间,是一种全双工协议,它提供了可靠的、有序的、不丢失的、无差错的数据传输服务,并且提供了流量控制和拥塞控制机制。TCP协议把数据报文段封装成TCP报文段,并且在传输过程中,TCP协议会维护一个连接状态,这个状态就是TCP状态。

TCP状态的分类

TCP状态可以分为7种:

1、CLOSED(关闭):这是TCP连接的初始状态,这时,两端都没有任何连接,也没有任何连接请求。

2、LISTEN(监听):一端发起连接请求,另一端就处于监听状态,等待连接请求。

3、SYN_SENT(同步发送):这时,发起连接的一端发送了一个SYN报文段,表示要建立连接,等待对方确认。

4、SYN_RCVD(同步接收):接收方收到了SYN报文段,并发送了一个确认报文段,等待对方的确认。

5、ESTABLISHED(建立):这时,双方都确认了,连接建立成功,双方可以正常通信了。

6、FIN_WAIT_1(结束等待1):一端发起关闭连接,发送FIN报文段,等待对方的确认。

7、CLOSED(关闭):双方都确认了,连接关闭成功,双方不能再进行通信。

TCP状态的转换

TCP状态之间的转换是有一定规律的,例如,建立TCP连接的过程,就是从CLOSED状态转换到ESTABLISHED状态,过程如下:

CLOSED --> SYN_SENT --> SYN_RCVD --> ESTABLISHED

而关闭TCP连接的过程,则是从ESTABLISHED状态转换到CLOSED状态,过程如下:

ESTABLISHED --> FIN_WAIT_1 --> CLOSE_WAIT --> LAST_ACK --> CLOSED