You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

TCP 2-way handshake关闭连接的PCAP包分析及技术疑问咨询

关于TCP 2-way关闭握手的问题解答

1. 谁发起了连接关闭信号?

从你提供的截图数据包(No.5)可以直接判定:**192.168.1.101:49160(客户端)**是连接关闭的发起者。这个包带有FIN和ACK标志位,其中FIN就是TCP协议里主动发起连接关闭的核心信号——发送FIN包的一端,代表自己已经没有数据要传输给对方,正式请求关闭连接。

2. 为什么会出现2-way握手完成关闭?

你觉得这不符合常规逻辑是正常的,因为咱们默认的TCP关闭是四次握手,但这种“2-way”其实是TCP协议允许的优化场景,完全合规:
常规四次关闭流程是:

  • 客户端发FIN → 服务器单独回ACK
  • 服务器发FIN → 客户端单独回ACK

但如果服务器在收到客户端的FIN时,已经没有任何待发送给客户端的数据了,TCP会自动把“对客户端FIN的确认ACK”和“自己的关闭请求FIN”合并成一个包发送(也就是截图里的No.6包,同时带FIN+ACK标志)。这样原本的四次握手就简化成了三个包:

  1. 客户端 → FIN/ACK
  2. 服务器 → FIN/ACK
  3. 客户端 → ACK

这种合并后的流程常被口语化描述为“2-way关闭握手”(因为把服务器的两个步骤合并成了一个),本质是TCP为减少网络包数量、提升传输效率做的合理优化,完全符合协议规范。

内容的提问来源于stack exchange,提问作者Leo

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.05.27 09:47:32