TIME_WAIT 状态的 TCP 连接在接收到 SYN 后,会重新进入 ESTABLISHED 状态吗?

2026-05-22 16:120阅读0评论SEO资源
  • 内容介绍
  • 文章标签
  • 相关推荐

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

TIME_WAIT 状态的 TCP 连接在接收到 SYN 后,会重新进入 ESTABLISHED 状态吗?

周末和朋友讨论了TCP的一些问题,在查阅《Linux服务器高性能编程》这本书时,发现书中提到这样一句话:书上说起,处理TIME_WAIT状态的连接,在收到相同四元组的SYN后,会回应。

周末跟朋友讨论了一些 TCP 的问题,在查阅《Linux 服务器高性能编程》这本书的时候,发现书上写了这么一句话:

书上说,处于 TIME_WAIT 状态的连接,在收到相同四元组的 SYN 后,会回 RST 报文,对方收到后就会断开连接。

书中作者只是提了这么一句话,没有给予源码或者抓包图的证据。

起初,我看到也觉得这个逻辑也挺符合常理的,但是当我自己去啃了 TCP 源码后,发现并不是这样的。

所以,今天就来讨论下这个问题,「在 TCP 正常挥手过程中,处于 TIME_WAIT 状态的连接,收到相同四元组的 SYN 后会发生什么?

问题现象如下图,左边是服务端,右边是客户端:

先说结论

在跟大家分析 TCP 源码前,我先跟大家直接说下结论。

针对这个问题,关键是要看 SYN 的「序列号和时间戳」是否合法,因为处于 TIME_WAIT 状态的连接收到 SYN 后,会判断 SYN 的「序列号和时间戳」是否合法,然后根据判断结果的不同做不同的处理。

阅读全文

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

TIME_WAIT 状态的 TCP 连接在接收到 SYN 后,会重新进入 ESTABLISHED 状态吗?

周末和朋友讨论了TCP的一些问题,在查阅《Linux服务器高性能编程》这本书时,发现书中提到这样一句话:书上说起,处理TIME_WAIT状态的连接,在收到相同四元组的SYN后,会回应。

周末跟朋友讨论了一些 TCP 的问题,在查阅《Linux 服务器高性能编程》这本书的时候,发现书上写了这么一句话:

书上说,处于 TIME_WAIT 状态的连接,在收到相同四元组的 SYN 后,会回 RST 报文,对方收到后就会断开连接。

书中作者只是提了这么一句话,没有给予源码或者抓包图的证据。

起初,我看到也觉得这个逻辑也挺符合常理的,但是当我自己去啃了 TCP 源码后,发现并不是这样的。

所以,今天就来讨论下这个问题,「在 TCP 正常挥手过程中,处于 TIME_WAIT 状态的连接,收到相同四元组的 SYN 后会发生什么?

问题现象如下图,左边是服务端,右边是客户端:

先说结论

在跟大家分析 TCP 源码前,我先跟大家直接说下结论。

针对这个问题,关键是要看 SYN 的「序列号和时间戳」是否合法,因为处于 TIME_WAIT 状态的连接收到 SYN 后,会判断 SYN 的「序列号和时间戳」是否合法,然后根据判断结果的不同做不同的处理。

阅读全文