首页/新闻资讯/正文详情

【网络协议】图解 TCP 三次握手与四次挥手(超通俗白话详解)

发布时间:2026/9/27 6:38:23 来源:云帆数科 栏目:资讯中心
【网络协议】图解 TCP 三次握手与四次挥手(超通俗白话详解)
【网络协议】图解 TCP 三次握手与四次挥手超通俗白话详解在计算机网络中TCP传输控制协议是一种面向连接的、可靠的、基于字节流的传输层通信协议。为了确保数据能够准确无误地送达TCP 在建立连接时需要进行三次握手而在断开连接时需要进行四次挥手。本文将用最通俗的“打两场电话”的白话比喻带你彻底搞懂它们的底层原理与核心细节。 核心白话总结如果把两台计算机通信比作打两场电话三次握手就是打电话刚接通时双方确认“喂你能听到我说话吗我也能听到你说话那我们开始聊吧”的过程。四次挥手就是聊完天挂电话时双方确认“事情说完了挂了啊。等等我最后再交代一句……好了彻底挂了”的过程。一、 三次握手建立连接三次握手的核心目的是让客户端和服务器双方都确认自己和对方的“发送”与“接收”能力完全正常。1. 流程图解客户端 (Client) 服务器 (Server) | | | 1. SYN (我的序列号是 X我想连你) | |--------------------------------------------| | | | 2. SYN ACK (收到我序列号是 Y你连吧) | |--------------------------------------------| | | | 3. ACK (收到那我们正式开始传输) | |--------------------------------------------| | |2. 步骤详解第一次握手Client → Server动作客户端向服务器发送一个标志位为SYN1同步的报文并随机生成一个初始序列号seq x。此时客户端进入SYN_SENT状态。潜台词“服务器你好我想和你建立连接。”状态确认此时服务器确认了“客户端的发送能力正常自己的接收能力正常”。第二次握手Server → Client动作服务器收到请求同意连接。回传一个包含SYN1和ACK1确认的报文。确认号为ack x 1并自己也随机生成一个初始序列号seq y。此时服务器进入SYN_RCVD状态。潜台词“收到请求了我同意。你能听到我说话吗”状态确认此时客户端确认了“对方的发送和接收都正常自己的发送和接收也全正常”。第三次握手Client → Server动作客户端收到服务器的确认最后回复一个ACK1报文确认号为ack y 1序列号为seq x 1。此时客户端和服务器都进入ESTABLISHED已建立连接状态。潜台词“能听到那我们正式开始传数据吧”状态确认此时服务器确认了“客户端的接收能力正常对方也能听到自己”。 核心面试题为什么不能是“两次握手”主要是为了防止已失效的连接请求报文突然又传送到了服务器从而导致资源浪费和错误。场景举例客户端发的第一个连接请求在某个网络节点“堵车”了客户端以为丢包了于是重发了第二个请求顺利完成通信并断开了。结果过了很久那个堵车的第一个请求终于走到了服务器。如果是“两次握手”服务器只要一答应连接就建立了。但此时客户端其实根本不需要传数据服务器就会一直开启资源干等着白白浪费服务器的算力和内存。如果是“三次握手”服务器答应后客户端不予理睬不进行第三次握手这个过期的无效连接就建立不起来。二、 四次挥手断开连接由于 TCP 是全双工的即同一时间双方都可以独立互发数据这意味着即使客户端不想发数据了服务器可能还有数据没发完。因此断开连接时需要双方各自独立关闭自己的通道一共需要走四步。1. 流程图解客户端 (Client) 服务器 (Server) | | | 1. FIN (我没数据发了想关闭) | |--------------------------------------------| | | | 2. ACK (知道了但我可能还没发完你等会) | |--------------------------------------------| | 【此时服务器继续把剩下数据发完】 | | 3. FIN (我也发完了可以关闭了) | |--------------------------------------------| | | | 4. ACK (收到那我挂了) | |--------------------------------------------| | (客户端等待 2MSL 后彻底关闭) |2. 步骤详解第一次挥手Client → Server动作客户端发完数据了发送一个FIN1结束报文序列号seq u。此时客户端进入FIN_WAIT_1状态。潜台词“服务器我这边的数据发完了准备关闭发送通道了。”第二次挥手Server → Client动作服务器收到通知回复一个ACK1报文确认号为ack u 1。此时服务器进入CLOSE_WAIT状态客户端收到后进入FIN_WAIT_2状态。潜台词“知道了。不过我这边可能还有点数据没发完你先等等但我保证不收你的新数据了。”当前状态TCP 进入半关闭状态。客户端不能发数据但能接收服务器如果还有没发完的数据会继续发给客户端。第三次挥手Server → Client动作服务器把最后的数据也发完了向客户端发送一个FIN1、ACK1的报文序列号seq v确认号依然是ack u 1。此时服务器进入LAST_ACK状态。潜台词“好了我这边的数据也全部发完了。我也准备关闭了。”第四次挥手Client → Server动作客户端收到服务器的FIN回复最后一个ACK1报文确认号ack v 1。此时客户端进入TIME_WAIT状态。潜台词“收到那大家都散了吧。”⚠️ 核心面试题为什么第四次挥手后客户端还要等待 2MSL客户端发送完最后一个 ACK 后不会立刻闪人而是必须在原地等待2MSLMaximum Segment Lifetime最大报文生存时间通常是 1 到 4 分钟才会彻底关闭进入CLOSED状态。主要原因有两个防止最后的 ACK 报文丢失如果客户端发完 ACK 就直接断开而这个 ACK 在网络中不巧丢包了。服务器迟迟收不到最后的确认就会以为自己的FIN丢了从而疯狂重发第三次的FIN。如果客户端还在TIME_WAIT状态就能重新补发ACK如果客户端已经关了服务器就永远无法正常关闭。防止“已失效的连接请求报文”出现在新连接中等待 2MSL 的时间可以保证本次连接中产生的所有网络报文包括重传和延迟的包都在网络中自然消失。这样下次你再建立一个新的连接时旧连接的残留报文就不会跳出来干扰新连接。三、 总结对比建立连接三次握手为了确认双方的收发能力。因为双方是一起准备好的所以服务器把“同意连接SYN”和“确认收到ACK”合并在了一步第二次握手因此只需要 3 次。断开连接四次挥手因为 TCP 是全双工的。客户端说不发了FIN不代表服务器也发完了服务器需要先把手头的数据发完先回 ACK再回 FIN这两个动作无法合并因此必须拆成 2 步总共需要 4 次。如果你觉得这篇博文对你有帮助欢迎点赞、收藏、关注下一期我们将深入探讨 SYN 洪水攻击的原理及防御手段。

相关推荐

Harness Anything+Python:WPS文档批量自动化处理实战
Harness Anything+Python:WPS文档批量自动化处理实战

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views … · 2026/9/27 6:38:23

Comate 3.7.0 对比 KimiCode 2.1.0:2026-09-26 个人版与企...
Comate 3.7.0 对比 KimiCode 2.1.0:2026-09-26 个人版与企...

Comate 3.7.0 对比 KimiCode 2.1.0:2026-09-26 个人版与企业版深度解析引言:为什么需要这场IDE对比?2026年9月,国内AI编程辅助工具市场呈现两强并立的格局。百度文心快码Comate凭借文心大模型技术底蕴和WPS生态背书,以… · 2026/9/27 6:38:23

Windows 安装 Superset 避坑指南:Docker、WSL2 与 pip 全解析
Windows 安装 Superset 避坑指南:Docker、WSL2 与 pip 全解析

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views … · 2026/9/27 6:38:23

补齐野外通信配套短板:黑龙江属地供应链对林区工矿通信标准化的支撑作用
补齐野外通信配套短板:黑龙江属地供应链对林区工矿通信标准化的支撑作用

摘要 基于黑龙江省通信管理局“宽带边疆”“信号升格”专项建设背景,高纬度寒地野外通信长期存在气候工况极端、地形遮挡严重、公网覆盖不足、设备适配性差、运维体系缺失五大行业结构性难题。相较于全国常温区域,黑龙江野外无线专网设备故障率、参数漂移… · 2026/9/27 7:10:05

Ajenti 面板 Settings 插件实战指南:config.yml 与 smtp.yml 的界面化配置、SSL 证书管理与邮件中继
Ajenti 面板 Settings 插件实战指南:config.yml 与 smtp.yml 的界面化配置、SSL 证书管理与邮件中继

后端运维 【免费下载链接】ajenti Ajenti Core and stock plugins 项目地址: https://gitcode.com/gh_mirrors/aj/ajenti 点击查看 免费下载 本文以 Ajenti 仓库中 Settings 插件文档 为核心骨架,系统讲解 Ajenti 面板内建 "Settings"&#x… · 2026/9/27 7:09:46

Sphinx sphinx-autogen 命令完全指南:从 autosummary 指令批量生成 autodoc 存根文档
Sphinx sphinx-autogen 命令完全指南:从 autosummary 指令批量生成 autodoc 存根文档

文档开发工具 【免费下载链接】sphinx The Sphinx documentation generator 项目地址: https://gitcode.com/gh_mirrors/sp/sphinx 点击查看 免费下载 autosummary 扩展可以把模块、类、函数整理成清晰的摘要列表,而 sphinx-autogen 则负责把列表中带有… · 2026/9/27 7:09:46

Agent 连上了数据库,还在一遍遍找表——EvoOntology 对账
Agent 连上了数据库,还在一遍遍找表——EvoOntology 对账

Agent 连上了数据库,还在一遍遍找表——EvoOntology 对账:会长大的地图,和被弄丢的门槛 先看一个场景。你给 Agent 接上数据库、Excel、PDF,还有一堆 API。理论上它什么都能查。真跑起来呢。找表,猜字段,写一条 SQL,看结果不对,再猜。下一个任务来了,从头再来。 Tok… · 2026/9/27 7:09:40

Cap vs SilentShield:开源自助托管 Proof-of-Work CAPTCHA 与行为分析托管服务的选型对比
Cap vs SilentShield:开源自助托管 Proof-of-Work CAPTCHA 与行为分析托管服务的选型对比

网络安全应用安全后端 【免费下载链接】cap Free, open-source and self-hosted CAPTCHA alternative to reCAPTCHA. Privacy-first and powered by proof-of-work and instrumentation challenges. 项目地址: https://gitcode.com/gh_mirrors/cap13/cap 点击查看 免… · 2026/9/27 7:09:40

计算机毕业设计选题推荐:基于大数据的电子游戏特卖数据分析与可视化、毕业设计选题、选题推荐、高质量项目、毕设指导、项目定制、源码、讲解文档
计算机毕业设计选题推荐:基于大数据的电子游戏特卖数据分析与可视化、毕业设计选题、选题推荐、高质量项目、毕设指导、项目定制、源码、讲解文档

💖💖作者:计算机毕业设计小途 💙💙个人简介:曾长期从事计算机专业培训教学,本人也热爱上课教学,语言擅长Java、微信小程序、Python、Golang、安卓Android等,开发项目包括… · 2026/9/27 7:09:40

MATLAB雷达信号脉冲压缩仿真:LFM线性调频、匹配滤波与距离分辨率实现
MATLAB雷达信号脉冲压缩仿真:LFM线性调频、匹配滤波与距离分辨率实现

简介:这套Matlab仿真工具完整呈现雷达信号脉冲压缩过程,从线性调频(LFM)信号生成、目标回波仿真到匹配滤波压缩处理均有可运行代码支撑,面向电子信息工程、计算机、数学等专业学生,适用于课程设计、期末大作… · 2026/9/27 0:00:01

汕头网站建设制作厂家避坑指南:5大注意事项救急
汕头网站建设制作厂家避坑指南:5大注意事项救急

汕头网站建设制作厂家避坑指南:5大注意事项救急 改个需求建站公司拖一周,这种憋屈事我见得太多了。 很多汕头老板找本地建站团队,签合同前看着方案挺美,一上线就变脸。 今天不聊虚的,直接拆解找 汕头网站建设制作厂家 时的5个核心 注意事项… · 2026/9/27 0:00:01

多模态虚假新闻检测实战:BERT+ResNet双塔与对比学习
多模态虚假新闻检测实战:BERT+ResNet双塔与对比学习

简介:基于PyTorch的多模态虚假新闻检测项目完整代码包,面向自然语言处理与计算机视觉交叉方向的开发者、科研人员及毕业设计选题者,解决社交媒体中文本与图像联合识别虚假新闻的问题。系统以BERT预训练模型提取文本语义特征,以Res… · 2026/9/27 0:00:01

MATLAB雷达信号脉冲压缩仿真:LFM线性调频、匹配滤波与距离分辨率实现
MATLAB雷达信号脉冲压缩仿真:LFM线性调频、匹配滤波与距离分辨率实现

简介:这套Matlab仿真工具完整呈现雷达信号脉冲压缩过程,从线性调频(LFM)信号生成、目标回波仿真到匹配滤波压缩处理均有可运行代码支撑,面向电子信息工程、计算机、数学等专业学生,适用于课程设计、期末大作… · 2026/9/27 0:00:01

汕头网站建设制作厂家避坑指南:5大注意事项救急
汕头网站建设制作厂家避坑指南:5大注意事项救急

汕头网站建设制作厂家避坑指南:5大注意事项救急 改个需求建站公司拖一周,这种憋屈事我见得太多了。 很多汕头老板找本地建站团队,签合同前看着方案挺美,一上线就变脸。 今天不聊虚的,直接拆解找 汕头网站建设制作厂家 时的5个核心 注意事项… · 2026/9/27 0:00:01

多模态虚假新闻检测实战:BERT+ResNet双塔与对比学习
多模态虚假新闻检测实战:BERT+ResNet双塔与对比学习

简介:基于PyTorch的多模态虚假新闻检测项目完整代码包,面向自然语言处理与计算机视觉交叉方向的开发者、科研人员及毕业设计选题者,解决社交媒体中文本与图像联合识别虚假新闻的问题。系统以BERT预训练模型提取文本语义特征,以Res… · 2026/9/27 0:00:01

了解更多?预约专属演示

我们的顾问将为您一对一讲解产品与方案

企业微信二维码