详细说明 TCP 的三次握手和四次挥手流程
详细说明 TCP 的三次握手和四次挥手流程
程序员朱永胜有的时候博客内容会有变动,首发博客是最新的,其他博客地址可能会未同步, 认准
https://blog.zysicyj.top
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 的三次握手和四次挥手完成了连接的建立和终止,保证了数据的可靠传输和连接的稳定性。