详细说明TCP的三次握手和四次挥手流程

有的时候博客内容会有变动,首发博客是最新的,其他博客地址可能会未同步,认准https://blog.zysicyj.top

全网最细面试题手册,支持艾宾浩斯记忆法。这是一份最全面、最详细、最高质量的 java 面试题,不建议你死记硬背,只要每天复习一遍,有个大概印象就行了。 https://store.amazingmemo.com/chapterDetail/1685324709017001

TCP的三次握手和四次挥手是TCP连接的建立和终止过程,下面将详细说明这两个过程的流程。

1. TCP的三次握手(Three-way Handshake)

1.1. 第一步:客户端向服务器发送连接请求

  • 客户端发送一个SYN(同步)包,其中包含一个随机的初始序列号(ISN)。

  • 此时客户端进入SYN_SENT状态,等待服务器的确认。

1.2. 第二步:服务器收到连接请求并回应

  • 服务器收到客户端的SYN包后,会发送一个ACK(确认)包作为响应,同时也会发送一个SYN包,其中包含一个随机的初始序列号。

  • 服务器进入SYN_RCVD状态,等待客户端的确认。

1.3. 第三步:客户端收到服务器的响应并回应

  • 客户端收到服务器的SYN和ACK包后,会发送一个ACK包作为确认。

  • 此时客户端和服务器都进入ESTABLISHED状态,连接建立成功,可以开始数据传输。

2. TCP的四次挥手(Four-way Handshake)

2.1. 第一步:客户端发送关闭连接请求

  • 客户端发送一个FIN(结束)包,表示客户端不再发送数据,但仍可以接收数据。

  • 此时客户端进入FIN_WAIT_1状态,等待服务器的确认。

2.2. 第二步:服务器收到关闭请求并回应

  • 服务器收到客户端的FIN包后,会发送一个ACK包作为确认,表示服务器接受客户端的关闭请求,但仍可以发送数据。

  • 此时服务器进入CLOSE_WAIT状态,等待关闭连接。

2.3. 第三步:服务器发送关闭连接请求

  • 服务器发送一个FIN包,表示服务器不再发送数据,但仍可以接收数据。

  • 此时服务器进入LAST_ACK状态,等待客户端的确认。

2.4. 第四步:客户端收到服务器的关闭请求并回应

  • 客户端收到服务器的FIN包后,会发送一个ACK包作为确认,表示客户端接受服务器的关闭请求。

  • 此时客户端进入TIME_WAIT状态,等待2倍的MSL(Maximum Segment Lifetime,报文段最长寿命)时间后,最终进入CLOSED状态。

  • 服务器收到客户端的ACK包后,也进入CLOSED状态,连接正式关闭。

通过以上流程,TCP的三次握手和四次挥手完成了连接的建立和终止,保证了数据的可靠传输和连接的稳定性。

最后更新于