后端经典面试题合集, 简述 TCP 三次握手,四次挥手的流程?为什么需要三次握手?为什么需要四次挥手?
后端经典面试题合集, 简述 TCP 三次握手,四次挥手的流程?为什么需要三次握手?为什么需要四次挥手?
QA
Step 1
Q:: 简述 TCP 三次握手的流程?
A:: TCP 三次握手是建立连接的过程,分为三个步骤:1) 客户端向服务器发送一个 SYN 报文段,请求建立连接,进入 SYN_SENT 状态;2) 服务器收到 SYN 后,回应一个 SYN + ACK 报文段,并进入 SYN_RCVD 状态;3) 客户端收到 SYN +
ACK 后,发送一个 ACK 报文段给服务器,服务器收到 ACK 后进入 ESTABLISHED 状态,连接建立完成。
Step 2
Q:: 简述 TCP 四次挥手的流程?
A:: TCP 四次挥手是关闭连接的过程,分为四个步骤:1) 客户端向服务器发送 FIN 报文段,请求关闭连接,进入 FIN_WAIT_1 状态;2) 服务器收到 FIN 后,发送 ACK 报文段,并进入 CLOSE_WAIT 状态;3) 客户端收到 ACK 后,进入 FIN_WAIT_2 状态,等待服务器发送 FIN 报文段;4) 服务器发送 FIN 报文段并进入 LAST_ACK 状态,客户端收到 FIN 后,发送 ACK 报文段并进入 TIME_WAIT 状态,等待 2
MSL 时间后进入 CLOSED 状态,连接关闭。
Step 3
Q:: 为什么 TCP 连接需要三次握手?
A:: TCP 连接需要三次握手是为了确保双方都具备发送和接收数据的能力。第一次握手是客户端发送 SYN,表示自己有能力发送数据;第二次握手是服务器回复 SYN+
ACK,表示自己也有能力接收和发送数据;第三次握手是客户端发送 ACK,确认服务器接收到数据,并确保通信通道的双向性,避免出现“已失效的连接请求报文”导致错误。
Step 4
Q:: 为什么 TCP 连接关闭需要四次挥手?
A:: TCP 连接关闭需要四次挥手是因为 TCP 是全双工通信的协议,双方都需要单独关闭发送和接收通道。第一次挥手(FIN)是由主动关闭方发起的,表示不再发送数据但仍可接收数据。第二次挥手(ACK)是被动关闭方的确认。第三次挥手(FIN)是被动关闭方发起的,表示不再接收数据。第四次挥手(ACK)是主动关闭方确认关闭。