【计算机网络】TCP 协议深度拆解 📅 发布时间:2026/7/8 20:21:54 👁️ 浏览次数: TCP传输控制协议在面试中出现的评频率也很高为了自己的复习和帮助大家备战面试今天特别把TCP核心的知识点串起来过一遍。今天我从 TCP 是什么、优缺点、长什么样报文组成一路深挖到它的连接管理握手与挥手帮你建立起 TCP 体系结构一、 什么是 TCP如果把互联网比作一个庞大的物流系统IP 协议负责的是“根据地址把包裹从 A 运到 B”但 IP 协议是个“渣男”它只管发丢了不管乱序了也不管。这时候就需要TCP出马了。TCP 就像是一位负责的快递站点主管。它的官方定义是面向连接的、可靠的、基于字节流的传输层通信协议。面向连接送货前必须先打电话确认你在家建连送完货还要互相道别断开。可靠的保证包裹准时、按序、完整地送到。如果半路丢了他会自己回去重发。基于字节流它不管你发的是一段话还是一张图在它眼里都是一串连续的水流这也是导致“粘包”现象的根本原因。二、 TCP 的优缺点面试官问“既然 TCP 这么好为什么还要用 UDP”这时候你就要抛出它的优缺点了。优点绝对可靠不丢包、不重包、不乱序。流量/拥塞控制能根据接收方的消化能力滑动窗口和整个网络的拥堵情况拥塞控制算法动态调整自己的发送速度不会把网络搞瘫痪。缺点延迟高建立连接要 3 次握手断开要 4 次挥手。如果你只是想发一句“在吗”TCP 的前期沟通成本太高了。开销大为了保证可靠性TCP 头部最少有 20 个字节而 UDP 只有 8 个字节。队头阻塞因为必须按顺序交付如果前面的一个包丢了后面已经到达的包也得在缓冲区里干等着导致整个数据流卡住。三、 TCP 的组成在讲握手之前必须先看看 TCP 的“快递单”上写了什么。以下给出核心组成源端口 / 目的端口这是快递单上的收发件人告诉操作系统这个包该交给哪个应用程序比如 80 端口给 Nginx。序列号 (seq)给每个字节编的号。解决乱序和去重就靠它。确认号 (ack)告诉对方“这个序号之前的数据我都收到了下一个请发这个序号”。标志位 (Flags)核心状态开关SYN申请建立连接。ACK确认收到。FIN申请断开连接。RST连接出了大问题强制重置断开。窗口大小 (Window)告诉对方“我的仓库还能放下多少东西”这是流量控制的核心字段。四、 三次握手了解了头部结构我们来看看它们是怎么交互的。三次握手的核心目的是为了同步双方的初始序列号 (ISN)并确认双方的双向收发能力。1. 握手全流程与状态流转第一次握手 (SYN)客户端发送一个带有SYN1的报文并随机生成一个初始序列号seq x。此时客户端进入SYN_SENT状态。潜台词“我想和你建立连接我的数据起始编号是 x。”第二次握手 (SYN ACK)服务端收到请求后如果同意会回复一个SYN ACK报文。确认收到了客户端的序号ack x 1同时服务端也生成自己的初始序列号seq y。服务端进入SYN_RCVD状态。潜台词“收到你的 x 了。我也要和你建立连接我的起始编号是 y请确认。”第三次握手 (ACK)客户端回复一个ACK报文ack y 1。发送完毕客户端进入ESTABLISHED已建立状态。服务端收到后也进入ESTABLISHED状态。潜台词“收到你的 y 了。连接正式开启”2. 细节深挖为什么偏偏是 3 次2 次不行吗第一确认双向收发能力。TCP 是全双工的。一去客发服收、一回服发客收、再去客发服收刚好 3 次能验证双方的“发”和“收”功能都正常。第二防止“历史失效连接”浪费资源最核心。假设网络卡顿客户端发的旧 SYN 滞留了客户端超时后重发了新 SYN 并走完了流程。如果后来那个旧 SYN 突然到了服务端若是 2 次握手服务端一收到旧 SYN 就傻傻地建立连接浪费了内存和端口。若是 3 次握手服务端回了 SYN-ACK客户端收到一看“这确认号不对啊是我很久之前发的直接回一个 RST 报文把这个错误的连接掐死在摇篮里。3. 细节深挖SYN Flood 泛洪攻击如果第三次握手的 ACK 迟迟不来服务端会不断超时重传第二次握手包。黑客伪造海量假 IP疯狂发第一次握手SYN但不发第三次。这就导致服务端的半连接队列瞬间被塞满正常的请求根本进不来CPU 也会因为不断重发包而飙升最终导致服务雪崩。五、 优雅的离场四次挥手建立连接需要热情断开连接则需要耐心。断开连接的本质是双方都要单独关闭自己的“发送通道”。1. 挥手全流程与状态流转断开通常由客户端主动发起第一次挥手 (FIN)客户端数据发完了发送FIN报文seq u进入FIN_WAIT_1状态。潜台词“我没数据要发了我要关闭发送通道了”第二次挥手 (ACK)服务端收到 FIN立刻回复ACKack u 1进入CLOSE_WAIT状态。客户端收到后进入FIN_WAIT_2状态。潜台词“知道了。但我可能还有数据没发完你先别彻底挂断继续听我发。”此时是半关闭状态第三次挥手 (FIN)服务端把剩下的数据全发完了发送FIN报文seq v进入LAST_ACK状态。潜台词“我的数据也发完了现在我也要关闭发送通道了再见。”第四次挥手 (ACK)客户端收到 FIN回复ACKack v 1进入TIME_WAIT状态。服务端收到后立刻进入CLOSED状态。潜台词“我的数据也发完了现在我也要关闭发送通道了再见。”2. 细节深挖为什么握手是 3 次挥手却要 4 次握手时服务端是个全新的状态它可以把“确认收到 (ACK)”和“我也要连 (SYN)”合并在一个包里发所以 3 次搞定。挥手时服务端收到客户端的 FIN 时往往还有数据没处理完。它只能先回个 ACK 安抚对方等自己把活干完了再单独发一个 FIN。因为这中间存在“处理剩余数据的时间差”没法合并所以多出了一次。3.CLOSE_WAIT 与 TIME_WAIT最后拓展一下这两个状态是后端排查故障的常客CLOSE_WAIT被动方出现如果服务器上有一堆CLOSE_WAIT说明你的代码出 Bug 了它发生在服务端收到 FIN 回复 ACK 之后。一直卡在这说明你的应用程序迟迟没有调用close()方法释放资源比如数据库连接池泄露。TIME_WAIT主动方出现客户端发完最后一次 ACK 后必须等待2MSL最大报文生存时间的 2 倍约 1 分钟。为什么要等兜底重传万一最后那个 ACK 丢了服务端会重传 FIN。等 2MSL 是为了保证客户端还能收到重传的 FIN 并补发 ACK。清理战场让本次连接产生的所有报文在网络中自然消亡防止“旧报文”跑到下一个复用该端口的新连接里去捣乱。
Qwen-Image-2512像素艺术LoRA快速上手:5分钟生成复古游戏风格图片 Qwen-Image-2512像素艺术LoRA快速上手:5分钟生成复古游戏风格图片 1. 从零开始:5分钟部署你的像素艺术生成器 想自己动手生成复古游戏风格的像素画吗?不用学画画,也不用买昂贵的软件。今天,我来带你快速上手一个超好… 2026/5/17 8:25:13
ArcGIS小白必看:3分钟搞定地图经纬网添加(附江苏省实例) ArcGIS地图经纬网实战:从零到精通的江苏地图定制指南 刚接触ArcGIS的朋友,面对一张光秃秃的地图,是不是总觉得少了点“专业感”?地图上那些纵横交错的经纬线,不仅是地理坐标的骨架,更是提升地图可读性和专… 2026/7/2 20:23:12
HDFS性能优化:10个提升存储效率的关键技巧 HDFS性能优化:10个提升存储效率的关键技巧 关键词:HDFS、性能优化、存储效率、块大小、副本机制、压缩编码、EC策略、缓存优化、元数据管理、监控调优 摘要:HDFS(Hadoop分布式文件系统)作为大数据存储的“基石”&#… 2026/7/5 8:44:13
OWASP ZAP 2.15 与 Burp Suite 2024 对比评测:5 大核心功能与实战效率分析 OWASP ZAP 2.15 与 Burp Suite 2024 对比评测:5 大核心功能与实战效率分析在Web应用安全测试领域,两款工具始终占据着行业讨论的中心——开源的OWASP ZAP与商业化的Burp Suite。2024年,随着ZAP 2.15版本的发布与Burp Suite年度更新的推出&… 2026/7/8 20:20:52
Unlock Music终极指南:3步解锁加密音乐,重获数字音乐所有权 Unlock Music终极指南:3步解锁加密音乐,重获数字音乐所有权 【免费下载链接】unlock-music 在浏览器中解锁加密的音乐文件。原仓库: 1. https://github.com/unlock-music/unlock-music ;2. https://git.unlock-music.dev/um/web … 2026/7/8 20:20:52
UDS 0x29 vs 0x27 安全服务对比:从种子密钥到PKI证书的5个关键差异 UDS 0x29 vs 0x27 安全服务对比:从种子密钥到PKI证书的5个关键差异 在汽车电子诊断领域,UDS(统一诊断服务)协议中的安全机制一直是保障车辆数据完整性和功能安全的核心。随着车联网技术的快速发展,传统的0x27安全访问服… 2026/7/8 20:18:52
UDS 0x29 服务 APCE 模式实战:基于 OpenSSL 生成 X.509 证书的 5 步配置 UDS 0x29 服务 APCE 模式实战:基于 OpenSSL 生成 X.509 证书的 5 步配置 1. 汽车诊断安全认证的技术演进 在智能网联汽车快速发展的今天,传统基于种子密钥(Seed & Key)的27服务已无法满足日益增长的网络安全需求。ISO 14229-… 2026/7/8 20:18:52
基于MA12070与STM32G431KB的高保真D类音频放大器设计 1. 项目背景与核心器件选型在DIY音频设备领域,如何用合理的成本搭建出专业级音质系统一直是硬件发烧友的追求。MA12070作为英飞凌第四代D类放大器IC,其革命性的Multi-Level Switching技术彻底改变了传统D类放大器的供电模式。与普通PWM调制方案相比&… 2026/7/8 20:16:51
ASP Request 对象 Cookie 注入:5步手工检测与自动化工具对比 ASP Request对象Cookie注入:手工检测与自动化工具实战指南1. 理解Cookie注入的本质与ASP Request对象机制Cookie注入是一种特殊形式的SQL注入攻击,它利用了Web应用程序对Cookie数据处理不当的漏洞。与传统的GET/POST注入不同,这种攻击方式通过… 2026/7/8 20:16:51
BetterNCM安装器:高效管理网易云插件的最佳选择 BetterNCM安装器:高效管理网易云插件的最佳选择 【免费下载链接】BetterNCM-Installer 一键安装 Better 系软件 项目地址: https://gitcode.com/gh_mirrors/be/BetterNCM-Installer 还在为网易云音乐插件的繁琐安装流程而烦恼吗?BetterNCM安装器是… 2026/7/8 0:02:48
运动控制系统安全设置对比:ECI3808的3种限位保护与急停逻辑实现 运动控制系统安全机制深度解析:限位保护与急停逻辑的设计哲学在精密制造与自动化领域,运动控制系统的安全设计绝非简单的功能堆砌,而是一套融合了机械工程、电气原理和软件算法的防御体系。当一台数控机床以每分钟数万转的速度运转࿰… 2026/7/8 0:06:48
AI大模型应用开发:小白也能抓住的红利风口,收藏这篇入门指南! 文章指出,虽然微软等科技巨头在裁员,但英伟达等公司却在积极扩招AI相关人才,尤其是具身智能、仿真等领域。AI行业正在经历结构性调整,传统岗位被淘汰,而大模型应用开发等新岗位需求旺盛。对于想转行或学习AI的普通人来… 2026/7/8 0:10:49
6个月转型AI工程师:实战路径与核心技能 1. 项目概述:6个月转型AI工程师的可行性路径在2023年大模型技术爆发的背景下,AI工程师岗位需求同比增长217%(LinkedIn数据)。不同于传统算法工程师需要3-5年培养周期,现代AI工程师更侧重工程化落地能力。我在硅谷科技公… 2026/7/7 11:26:57
TPAFE0808与PIC18F87K22的多通道信号采集方案 1. 项目背景与核心需求在工业自动化、医疗设备和科研仪器等领域,多通道信号采集与系统监测是基础且关键的技术需求。传统方案往往面临通道数量不足、信号调理复杂、系统集成度低等问题。TPAFE0808作为一款8通道模拟前端芯片,与PIC18F87K22微控制器的组合… 2026/7/8 20:15:17
STC3115与PIC18LF26K80构建高精度电池管理系统 1. STC3115与PIC18LF26K80在电池管理系统中的核心价值在现代电子设备中,电池管理系统(BMS)的重要性不亚于设备的核心处理器。STC3115作为一款高精度电池电量监测IC,与PIC18LF26K80微控制器的组合,构成了一个既能精确监控又能智能管理的完整解… 2026/7/8 14:25:08