当前位置: 首页 > article >正文

详解TCP的四次握手和三次挥手,以及里面每个阶段的状态

TCP 三次握手(连接建立)

TCP 连接建立通过三次握手完成,确保双方同步初始序列号并确认可达性。

阶段说明
  1. 第一次握手

    • 客户端 → 服务器:发送 SYN(同步请求),携带初始序列号 seq = x
    • 客户端状态SYN_SENT(等待服务器响应)。
  2. 第二次握手

    • 服务器 → 客户端:回复 SYN + ACK,确认客户端的 seqack = x + 1),并发送自己的初始序列号 seq = y
    • 服务器状态SYN_RCVD(等待客户端确认)。
  3. 第三次握手

    • 客户端 → 服务器:发送 ACK,确认服务器的 seqack = y + 1)。
    • 客户端状态ESTABLISHED(连接成功)。
    • 服务器状态:收到 ACK 后进入 ESTABLISHED

TCP 四次挥手(连接关闭)

TCP 连接关闭需要四次挥手,因为服务器可能需要时间处理未发送的数据。

阶段说明
  1. 第一次挥手

    • 客户端 → 服务器:发送 FIN(结束请求),请求关闭写通道,携带序列号 seq = u
    • 客户端状态FIN_WAIT_1(等待服务器确认)。
  2. 第二次挥手

    • 服务器 → 客户端:回复 ACK,确认客户端的 FINack = u + 1),并继续处理剩余数据。
    • 服务器状态CLOSE_WAIT(等待应用层关闭连接)。
    • 客户端状态:收到 ACK 后进入 FIN_WAIT_2(等待服务器关闭)。
  3. 第三次挥手

    • 服务器 → 客户端:发送 FIN,携带序列号 seq = v,表示数据已发送完毕。
    • 服务器状态LAST_ACK(等待客户端最终确认)。
  4. 第四次挥手

    • 客户端 → 服务器:回复 ACK,确认服务器的 FINack = v + 1)。
    • 客户端状态:进入 TIME_WAIT(等待 2MSL 确保所有数据包消失)。
    • 服务器状态:收到 ACK 后直接关闭,进入 CLOSED
    • 客户端最终状态TIME_WAIT 超时后进入 CLOSED

状态转换总结

阶段客户端状态服务器状态事件
连接建立SYN_SENT → ESTABLISHEDSYN_RCVD → ESTABLISHEDSYN → SYN+ACK → ACK
连接关闭FIN_WAIT_1 → FIN_WAIT_2 → TIME_WAIT → CLOSEDCLOSE_WAIT → LAST_ACK → CLOSEDFIN → ACK → FIN → ACK

关键细节

  • SYN 洪泛攻击:利用 SYN_SENT 状态耗尽服务器资源,需通过 SYN Cookie 等机制防御。
  • TIME_WAIT 作用:确保最后一个 ACK 到达服务器,避免旧连接的数据包干扰新连接。
  • 半关闭状态FIN_WAIT_2 时客户端仍可接收数据,服务器需主动关闭。

通过四次挥手,TCP 确保数据完整传输后优雅断开连接。

原文地址:https://blog.csdn.net/qq_35204012/article/details/146529471
本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.kler.cn/a/612114.html

相关文章:

  • 北斗导航 | 改进伪距残差矢量的接收机自主完好性监测算法原理,公式,应用,RAIM算法研究综述,matlab代码
  • 机器翻译和文本生成评估指标:BLEU 计算公式
  • k8s存储介绍(一)configmap
  • Spec2MP:项目管理之项目质量管理
  • 计算机二级WPS Office第十一套WPS演示
  • [微信小程序]对接sse接口
  • docker-实战
  • 解析 ID 数组传参的解决方案:基于 Axios 的实现
  • 使用electron-vite创建桌面应用
  • 清晰易懂的Trae实现为AI编程从安装到实战开发ToDoList
  • vue响应式原理剖析
  • Vue 把 Echarts 图传给后端:文件流信息方式传递
  • 第 12 章(番外)| Solidity 安全前沿趋势 × 审计生态 × 职业路径规划
  • Flutter TabBar 右侧渐变遮罩实现中的事件处理问题
  • 【渗透测试】Fastjson 反序列化漏洞原理(一)
  • 华为eNSP-配置静态路由与静态路由备份
  • STM32基础教程——输入捕获模式测量PWM频率
  • Docker Desktop 安装 RabbitMQ 并挂载本地卷
  • 31天Python入门——第13天:文件操作
  • DeepSeek分析:汽车关税政策对黄金市场的影响评估