TCP的状态转换图

状态转换图

1、虚线路径描述了客户端申请建立连接与断开连接的整个过程。在客户端通过发送一个SYN报文段,主动向服务器申请一个连接,在报文发出之后客户端进入SYN_SENT状态,等待服务器的ACK和SYN报文返回,当收到这个返回后,客户端对服务器的SYN进行确认,然后自身进入ESTABLISHED状态

2、当客户端申请断开连接时,它发送FIN报文为服务器申请断开连接,当FIN发送后,客户端进入FIN_WAIT_1状态等待服务器返回确认;当收到确认后,表明客户端到服务器方向的连接断开成功,此时客户端进入FIN_WAIT_2状态等待服务器到客户端方向的连接断开,然后等待;当客户端收到服务器的FIN报文时,表明服务器向客户端发送断开连接请求,此时,客户端向服务器返回一个ACK,并进入TIMEWAIT状态,在该状态下等待2MSL(MSL,报文最大生存时间,在很多实现中取为30秒,在LwIP中取为60秒)时间后,客户端进入初始的CLOSED状态。在连接处于2MSL等待时,任何迟到的报文段将被丢弃

3、在TIME_WAIT状态,协议中是这样描述的:当TCP执行一个主动关闭,并发出最后一个ACK后,该连接必须在TIME_WAIT状态停留2倍MSL的时间。这样可让TCP保证在最后的这个ACK丢失的情况下重新发送ACK(另一端FIN超时,必然会重新发送FIN,从而引起ACK的重新发送)。处于TIME_WAIT等待状态的TCP端口此刻还不能被其他新连接所使用

4、粗实线型的状态转换路径是描述服务器的。服务器建立连接一般属于被动过程,它首先打开某个熟知端口,进入LISTEN状态以侦听客户端的连接请求。当服务器收到客户端的SYN连接请求,则进入SYN_REV状态,并向客户端返回一个ACK及自身的SYN报文;此后,服务器等待客户端返回一个确认,收到该ACK后,服务器进入ESTABLISHED状态,在该状态下客户端可以和服务器进行稳定的数据交换

5、当服务器收到客户端发送的一个断开连接报文FIN时,则进入CLOSEWAIT状态,并向上层应用程序通告这个消息,同时向客户端返回一个ACK,此时客户端到服务器方向的连接断开成功;此后,当服务器上层应用处理完毕相关信息后会向客户端发送一个FIN报文,并进入LASK_ACK状态,等待客户端返回最后ACK,当收到返回的ACK后,此时服务器到客户端方向的连接断开成功,服务器端至此进入初始的CLOSED状态

猜你喜欢

转载自blog.csdn.net/qq_21231413/article/details/88680549