TCP协议的11种状态

在TCP的11种状态变迁中,我们需要用到TCP头部的三个标志位:

1.SYN,SYN=1表示这是一个连接请求报文或者连接接受报文

2.ACK,ACK=1,表示确认号生效

3.FIN,FIN=1表示发送方数据已经发送完毕,并要求释放连接

11种状态

CLOSED状态:初始状态,表示TCP连接是“关闭的”或者“未打开的”

LISTEN状态:表示服务端的某个端口正处于监听状态,正在等待客户端连接的到来
第一次握手时服务端的状态。

SYN_SENT状态:当客户端发送SYN请求建立连接之后,客户端处于SYN_SENT状态,等待服务器发送SYN+ACK
第一次握手时客户端的状态。

SYN_RCVD状态:当服务器收到来自客户端的连接请求SYN之后,服务器处于SYN_RCVD状态,在接收到SYN请求之后会向客户端回复一个SYN+ACK的确认报文
收到第一次握手后服务端的状态。

ESTABLISED状态:当客户端回复服务器一个ACK和服务器收到该ACK(TCP最后一次握手)之后,服务器和客户端都处于该状态,表示TCP连接已经成功建立
三次握手成功后客户端和服务端的状态。

FIN_WAIT_1状态:当数据传输期间当客户端想断开连接,向服务器发送了一个FIN之后,客户端处于该状态
第一次挥手时客户端的状态。

FIN_WAIT_2状态:当客户端收到服务器发送的连接断开确认ACK之后,客户端处于该状态
第二次挥手后客户端的状态。

CLOSE_WAIT状态:当服务器发送连接断开确认ACK之后但是还没有发送自己的FIN之前的这段时间,服务器处于该状态
第二次挥手后服务端的状态。**

TIME_WAIT状态:当客户端收到了服务器发送的FIN并且发送了自己的ACK之后,客户端处于该状态,关于TIME_WAIT状态在整个TCP体系中的作用
第三次挥手后客户端的状态。

LAST_ACK状态:表示被动关闭的一方(比如服务器)在发送FIN之后,等待对方的ACK报文时,就处于该状态
第三次挥手后服务端的状态。。

CLOSING状态:连接断开期间,一般是客户端发送一个FIN,然后服务器回复一个ACK,然后服务器发送完数据后再回复一个FIN,当客户端和服务器同时接受到FIN时,客户端和服务器处于CLOSING状态,也就是此时双方都正在关闭同一个连接
四次挥手后客户端和服务端的状态。

猜你喜欢

转载自www.cnblogs.com/Water2Wine/p/12910454.html