网络协议封神考点:TCP三次握手与四次挥手全过程深度详解

张开发
2026/4/7 20:56:44 15 分钟阅读

分享文章

网络协议封神考点:TCP三次握手与四次挥手全过程深度详解
网络协议封神考点TCP三次握手与四次挥手全过程深度详解前言一、TCP协议核心标志位必须掌握1.1 关键标志位定义1.2 核心缩写含义二、TCP三次握手建立连接过程2.1 三次握手标准定义2.2 核心作用2.3 完整流程有序号 流程图详细步骤2.4 三次握手流程图2.5 为什么必须是三次握手三、TCP四次挥手断开连接过程3.1 四次挥手标准定义3.2 核心原因3.3 完整流程有序号 流程图详细步骤3.4 四次挥手流程图3.5 为什么是四次挥手四、高频核心问题为什么客户端需要TIME_WAIT等待2MSL4.1 MSL是什么4.2 等待2MSL的作用五、总结三次握手 vs 四次挥手六、最终总结关键点回顾The Begin点点关注收藏不迷路前言TCP协议是互联网可靠传输的基石三次握手建立连接和四次挥手断开连接是网络面试、计算机网络考试、运维开发必备的核心知识点也是理解网络通信的关键。本文将从TCP报文标志位、三次握手流程、四次挥手流程、原理详解、常见面试题五大维度结合高清流程图、序号化拆解、状态转换带你彻底吃透TCP连接与断开的全过程保证一看就懂、一学就会。一、TCP协议核心标志位必须掌握TCP报文头中的6个标志位是握手与挥手的核心先搞懂它们才能看懂流程1.1 关键标志位定义SYN同步序列编号建立连接时使用ACK确认应答对收到的报文进行确认FIN结束标志关闭连接时使用RST重置连接异常断开使用PSH推送数据立即传输URG紧急指针1.2 核心缩写含义seq序列号标识发送给对方的数据字节编号ack确认号期望收到对方下一个字节的编号ISN初始序列号随机生成二、TCP三次握手建立连接过程2.1 三次握手标准定义TCP三次握手客户端与服务器建立TCP连接时相互发送3个报文段完成连接的过程核心目的确认双方收发能力正常、同步初始序列号。2.2 核心作用确认客户端发送、接收功能正常确认服务器发送、接收功能正常协商初始序列号为可靠传输做准备2.3 完整流程有序号 流程图环境客户端Client主动发起连接服务器Server被动监听详细步骤第一次握手客户端 → 服务器SYN客户端发送SYN报文标志位SYN1序列号seqx随机值客户端状态CLOSED → SYN_SENT第二次握手服务器 → 客户端SYNACK服务器收到请求回复SYNACK报文标志位SYN1ACK1序列号seqy随机值确认号ackx1服务器状态LISTEN → SYN_RCVD第三次握手客户端 → 服务器ACK客户端收到回复发送ACK确认报文标志位ACK1序列号seqx1确认号acky1双方状态ESTABLISHED连接建立成功2.4 三次握手流程图1. SYN1, seq2. SYN1, ACK1, seqy, ackx13. ACK1, seqx1, acky1客户端服务器状态CLOSED→SYN_SENT状态LISTEN→SYN_RCVD状态ESTABLISHED2.5 为什么必须是三次握手两次握手无法确认客户端接收能力正常可能导致失效连接请求滞留造成资源浪费三次握手双方收发能力全量确认是最小可靠次数三、TCP四次挥手断开连接过程3.1 四次挥手标准定义TCP四次挥手客户端与服务器断开TCP连接时相互发送4个报文段完成断开的过程因为TCP是全双工通信双方都要单独关闭发送通道。3.2 核心原因TCP连接是双向独立的一方关闭后另一方还能继续发送数据所以必须分开关闭、分别确认。3.3 完整流程有序号 流程图主动关闭方客户端被动关闭方服务器详细步骤第一次挥手客户端 → 服务器FIN客户端数据发送完毕发送FIN报文请求关闭标志位FIN1ACK1序列号sequ客户端状态ESTABLISHED → FIN_WAIT_1第二次挥手服务器 → 客户端ACK服务器收到请求回复ACK确认标志位ACK1确认号acku1序列号seqv服务器状态ESTABLISHED → CLOSE_WAIT客户端状态FIN_WAIT_1 → FIN_WAIT_2✅ 此时客户端→服务器方向关闭第三次挥手服务器 → 客户端FIN服务器数据发送完毕发送FIN报文标志位FIN1ACK1序列号seqw确认号acku1服务器状态CLOSE_WAIT → LAST_ACK第四次挥手客户端 → 服务器ACK客户端收到请求回复ACK确认标志位ACK1确认号ackw1序列号sequ1客户端等待2MSL后关闭双方状态CLOSED3.4 四次挥手流程图1. FIN1, sequ2. ACK1, acku13. FIN1, seqw4. ACK1, ackw1客户端服务器客户端FIN_WAIT_1服务器CLOSE_WAIT服务器LAST_ACK客户端TIME_WAIT → CLOSED3.5 为什么是四次挥手TCP是全双工收发是两个独立通道服务器收到FIN后先回复ACK确认但自己可能还有数据要发等服务器数据发完再主动发送FIN关闭因此确认 关闭分开变成四次四、高频核心问题为什么客户端需要TIME_WAIT等待2MSL4.1 MSL是什么MSL最大报文生存时间报文在网络中最大存活时间超过自动丢弃4.2 等待2MSL的作用确保最后一个ACK报文被服务器收到防止失效报文滞留在网络中干扰新连接保证连接可靠、安全关闭五、总结三次握手 vs 四次挥手场景次数核心标志位核心目的建立连接三次SYN、ACK确认双方收发能力断开连接四次FIN、ACK全双工通道分别关闭六、最终总结三次握手SYN → SYNACK → ACK建立可靠连接四次挥手FIN → ACK → FIN → ACK全双工关闭三次握手最小可靠连接次数四次挥手全双工特性导致TIME_WAIT等待2MSL确保可靠关闭、防止脏连接关键点回顾三次握手同步序列号确认收发能力连接建立四次挥手双向独立关闭全双工特性核心标志SYN建连、ACK确认、FIN关闭TIME_WAIT等待2MSL保证可靠关闭The End点点关注收藏不迷路

更多文章