TCP三次握手和四次挥手

一、核心前提

TCP 是面向连接、可靠、全双工 协议,通信前要建立连接 (三次握手),通信结束要断开连接(四次挥手)。

二、TCP 三次握手(建立连接)

目的

双方初始化序列号、确认收发能力都正常,同步状态。

流程

  1. 第一次握手 :客户端 → 服务端客户端发送 SYN 报文,请求建立连接,进入 SYN_SENT 状态。

  2. 第二次握手 :服务端 → 客户端服务端收到 SYN,回复 SYN + ACK

    • SYN:我也同意建连接
    • ACK:收到你的请求服务端进入 SYN_RCVD 状态。
  3. 第三次握手 :客户端 → 服务端客户端收到 SYN+ACK,回复 ACK 确认;客户端、服务端都进入 ESTABLISHED(已建立连接),开始传数据。

为什么是三次,不是两次?

防止失效的 SYN 报文 突然传到服务端,导致服务端一直等待、浪费资源。三次握手能保证双方收发都正常

三、TCP 四次挥手(断开连接)

特点

TCP 全双工,两边要各自关闭读写通道,所以需要四次。

流程

  1. 第一次挥手 :主动方(客户端)→ 被动方(服务端)发 FIN :我没数据要发了,请求关闭发送通道,进入 FIN_WAIT1

  2. 第二次挥手 :被动方 → 主动方回 ACK :收到关闭请求;此时主动方只能收不能发 ,被动方还能继续发剩余数据。主动方进入 FIN_WAIT2

  3. 第三次挥手 :被动方 → 主动方被动方数据发完了,发 FIN :我也没数据了,要关连接,进入 LAST_ACK

  4. 第四次挥手 :主动方 → 被动方主动方回 ACK ,进入 TIME_WAIT(等待一段时间确保对方收到);被动方收到 ACK 直接关闭;等待超时后主动方也关闭。

为什么挥手要四次?

因为FIN 和 ACK 不能合并:被动方收到 FIN 时,可能还有数据没发完,不能立刻发 FIN,只能先回 ACK,等数据发完再发 FIN,所以多一次。

总结:

  • 三次握手:SYN → SYN+ACK → ACK 建连接
  • 四次挥手:FIN → ACK → FIN → ACK 断连接
  • 握手:同步序列号;挥手:全双工各自断通道。
相关推荐
MC皮蛋侠客8 小时前
DNP3 系列(十二):测试与工具链——模拟器、Wireshark 与一致性测试
网络·wireshark·dnp3
虎王物联8 小时前
工业Modbus TCP协议深度实战:STM32 HAL库实现从机通信与数据上云
stm32·物联网·网络协议·tcp/ip·嵌入式
观测云9 小时前
Fastjson 高危 RCE(CVE-2026-16723):如何用观测云快速发现并完成修复
网络·安全·可观测性·观测云
大模型码小白10 小时前
Spring AI Tool 实现自然语言操作 MySQL 数据库详解
服务器·开发语言·数据库·人工智能·python·mysql·spring
晓晓_za89866811 小时前
开源 GEO 优化源码二次开发:贴牌改造与业务模块扩展实践
java·运维·服务器·开发语言·性能优化·开源
楷哥爱开发11 小时前
TikTok Shop新加坡本土店入驻:如何选择新加坡本土住宅IP?
网络·网络协议·tcp/ip
云贝教育-郑老师11 小时前
【麒麟服务器系统交付:一个DBA的六年信创实战笔记】
服务器·笔记·dba
网安蟹佬霸11 小时前
# 网络流量分析实战:从Wireshark到入侵检测系统构建(2026最新版,附完整流量分析链与IDS规则集)
网络·测试工具·安全·开源·wireshark·密码学·哈希算法
会飞的土拨鼠呀12 小时前
Linux的存储使用率应该如何计算
linux·运维·服务器
weixin_5112552113 小时前
NGINX常用配置
linux·服务器·nginx