美团二面:TCP的挥手过程能否简化为三次而非四次?

2026-05-29 11:522阅读0评论SEO教程
  • 内容介绍
  • 文章标签
  • 相关推荐

本文共计4166个文字,预计阅读时间需要17分钟。

美团二面:TCP的挥手过程能否简化为三次而非四次?

上周有读者团时,被问到:在TCP四次挥手过程中,能不能把第二次的ACK报文,和第三次FIN报文一起发送?当然,我们在学习TCP挥手时,学到的是需要四次来完成TCP挥手,但具体操作时,是否可以合并发送呢?

上周有位读者面美团时,被问到:TCP 四次挥手中,能不能把第二次的 ACK 报文, 放到第三次 FIN 报文一起发送?

虽然我们在学习 TCP 挥手时,学到的是需要四次来完成 TCP 挥手,但是在一些情况下, TCP 四次挥手是可以变成 TCP 三次挥手的。

而且在用 wireshark 工具抓包的时候,我们也会常看到 TCP 挥手过程是三次,而不是四次,如下图:

先来回答为什么 RFC 文档里定义 TCP 挥手过程是要四次?

再来回答什么情况下,什么情况会出现三次挥手?

为什么 TCP 挥手需要四次?

TCP 四次挥手的过程如下:

具体过程:

  • 客户端主动调用关闭连接的函数,于是就会发送 FIN 报文,这个 FIN 报文代表客户端不会再发送数据了,进入 FIN_WAIT_1 状态;
  • 服务端收到了 FIN 报文,然后马上回复一个 ACK 确认报文,此时服务端进入 CLOSE_WAIT 状态。
阅读全文

本文共计4166个文字,预计阅读时间需要17分钟。

美团二面:TCP的挥手过程能否简化为三次而非四次?

上周有读者团时,被问到:在TCP四次挥手过程中,能不能把第二次的ACK报文,和第三次FIN报文一起发送?当然,我们在学习TCP挥手时,学到的是需要四次来完成TCP挥手,但具体操作时,是否可以合并发送呢?

上周有位读者面美团时,被问到:TCP 四次挥手中,能不能把第二次的 ACK 报文, 放到第三次 FIN 报文一起发送?

虽然我们在学习 TCP 挥手时,学到的是需要四次来完成 TCP 挥手,但是在一些情况下, TCP 四次挥手是可以变成 TCP 三次挥手的。

而且在用 wireshark 工具抓包的时候,我们也会常看到 TCP 挥手过程是三次,而不是四次,如下图:

先来回答为什么 RFC 文档里定义 TCP 挥手过程是要四次?

再来回答什么情况下,什么情况会出现三次挥手?

为什么 TCP 挥手需要四次?

TCP 四次挥手的过程如下:

具体过程:

  • 客户端主动调用关闭连接的函数,于是就会发送 FIN 报文,这个 FIN 报文代表客户端不会再发送数据了,进入 FIN_WAIT_1 状态;
  • 服务端收到了 FIN 报文,然后马上回复一个 ACK 确认报文,此时服务端进入 CLOSE_WAIT 状态。
阅读全文