Skip to content

第 16 题:谈谈你对 TCP 三次握手和四次挥手的理解

三次握手

TCP 的三次握手是为了建立可靠的连接,确保通信双方都能够正常发送和接收数据。

  1. 第一次握手:客户端向服务器发送一个带有 SYN 标志的数据包,表示请求建立连接。客户端将随机生成一个初始序列号 (ISN) 并将其放入 SYN 字段中。

    提示

    服务端判断出客户端具有发送能力

  2. 第二次握手:服务器接收到客户端的请求后,会发送一个带有 SYNACK 标志的数据包作为响应。服务器将确认序列号 (ACK) 设置为客户端的 ISN 加一,并生成自己的初始序列号。

    提示

    客户端知道服务端具有发送和接收能力

  3. 第三次握手:客户端收到服务器的响应后,会发送一个带有 ACK 标志的数据包作为确认。客户端将确认序列号设置为服务器的 ISN 加一。

    提示

    客户端告知服务端自己具有接收能力

四次挥手

TCP 的四次挥手是为了结束已建立的连接,确保双方都能正确地关闭连接并释放资源。

  1. 第一次挥手:客户端发送一个带有 FIN(结束) 标志的数据包,表示自己已经没有数据要发送了,请求关闭连接。
  2. 第二次挥手:服务器接收到客户端的结束请求后,会发送一个带有 ACK(确认) 标志的数据包作为响应,表示已收到客户端的结束请求。
  3. 第三次挥手:服务器发送一个带有 FIN标志 的数据包,表示自己也没有数据要发送了,请求关闭连接。
  4. 第四次挥手:客户端接收到服务器的结束请求后,会发送一个带有 ACK 标志的数据包作为确认,表示已收到服务器的结束请求。