【计算机网络之TCP/UDP篇】TCP三次握手与四次挥手:从原理到实战调优

发布时间:2026/7/15 4:18:33

【计算机网络之TCP/UDP篇】TCP三次握手与四次挥手:从原理到实战调优
1. TCP三次握手的底层原理TCP三次握手是建立可靠网络连接的基石。想象一下你打电话给朋友的过程首先你拨号SYN朋友听到铃声接起电话说喂SYN-ACK你回一句是我ACK——这就是三次握手的现实类比。具体技术实现上第一次握手时客户端会生成一个32位随机序列号ISN比如12345678并将SYN标志位置1。这个随机数很关键它能防止历史连接被错误建立。服务端收到后会回复SYNACK其中确认号是客户端序列号112345679同时携带自己的序列号如87654321。最后客户端发送ACK时确认号变为服务端序列号187654322。我在实际抓包分析时发现Linux内核默认的ISN生成算法会结合时钟和哈希值这样既保证了随机性又避免了序列号预测攻击。通过命令sysctl net.ipv4.tcp_timestamps可以查看时间戳选项这对防御SYN洪水攻击很重要。2. 为什么必须是三次握手很多新人会疑惑为什么不能两次握手。假设只有两次握手当网络延迟导致旧的SYN包突然到达服务端时服务端会误认为是新连接而直接进入ESTABLISHED状态。但客户端知道自己没发起连接导致服务端资源被白白占用。更严重的是如果攻击者伪造大量SYN包服务端的半连接队列syn_queue会被迅速打满。通过ss -lntp命令可以看到监听状态的队列情况State Recv-Q Send-Q Local Address:Port Peer Address:Port LISTEN 0 128 *:80 *:*这里的Send-Q就是半连接队列的最大长度。我曾在压测时遇到过队列溢出的情况正常请求被丢弃这时需要调整tcp_max_syn_backlog和somaxconn参数。3. 四次挥手的完整过程断开连接需要四次挥手就像挂电话时的告别你说我说完了FIN朋友回知道了ACK朋友接着说我也说完了FIN你最后确认好的再见ACK关键点在于TIME_WAIT状态。客户端发送最终ACK后会等待2MSL通常是60秒这是为了确保最后一个ACK能到达对端让网络中残留的旧报文失效通过netstat -napo可以看到TIME_WAIT连接tcp 0 0 10.0.0.1:54322 10.0.0.2:80 TIME_WAIT timewait (58.00/0)在高并发短连接场景下大量TIME_WAIT会占用端口资源。这时可以开启tcp_tw_reuse和tcp_tw_recycle注意后者在NAT环境下有问题。4. 实战调优策略半连接队列溢出当ss -s显示sockets dropped增加时说明需要调整echo 1024 /proc/sys/net/ipv4/tcp_max_syn_backlog echo 1 /proc/sys/net/ipv4/tcp_syncookiesTIME_WAIT过多对于Web服务器可以设置echo 1 /proc/sys/net/ipv4/tcp_tw_reuse echo 1 /proc/sys/net/ipv4/tcp_tw_recycle # 慎用快速重传当网络抖动时通过降低重试间隔提升体验echo 3 /proc/sys/net/ipv4/tcp_syn_retries echo 3 /proc/sys/net/ipv4/tcp_synack_retries曾经有个电商项目在促销时出现连接失败最终发现是tcp_fin_timeout默认60秒太长调整为15秒后问题解决。调优一定要结合监控数据推荐使用tcpretrans工具观察重传情况。

相关新闻

Unity集成大模型SDK三大兼容性漏洞:内存、线程与序列化实战复盘

Unity集成大模型SDK三大兼容性漏洞:内存、线程与序列化实战复盘

2026/7/15 4:18:33

1. 项目概述:一次前沿技术融合的“翻车”现场在今年的奇点大会现场,我们团队原本计划展示一个激动人心的技术融合成果:将Meta最新发布的Llama-4大语言模型,通过其Game Agent SDK,无缝集成到最新的Unity 2026.2引擎中&a…

从投稿到录用:详解Computers  Graphics (CAG)期刊的完整流程与关键策略

从投稿到录用:详解Computers Graphics (CAG)期刊的完整流程与关键策略

2026/7/15 4:18:33

1. 认识Computers & Graphics期刊如果你正在计算机图形学领域深耕,想要发表自己的研究成果,Computers & Graphics(简称CAG)绝对是一个值得考虑的选择。作为Elsevier旗下专注于计算机图形学研究的国际期刊,CAG创…

ChatGPT如何3秒识破“伪折扣”?:基于172家品牌真实数据训练的消费避坑决策框架

ChatGPT如何3秒识破“伪折扣”?:基于172家品牌真实数据训练的消费避坑决策框架

2026/7/15 4:18:33

更多请点击: https://codechina.net 第一章:ChatGPT如何3秒识破“伪折扣”? 当电商页面显示“原价599,限时直降300,仅售299!”时,你是否想过:这个“原价”真的存在过吗&#xff1f…

3分钟快速检测:你的Android设备真的安全吗?Play Integrity API Checker终极指南

3分钟快速检测:你的Android设备真的安全吗?Play Integrity API Checker终极指南

2026/7/15 5:58:37

3分钟快速检测:你的Android设备真的安全吗?Play Integrity API Checker终极指南 【免费下载链接】play-integrity-checker-app Get info about your Device Integrity through the Play Intergrity API 项目地址: https://gitcode.com/gh_mirrors/pl/p…

纸质文档数字化实操指南:从扫描到可检索PDF的完整闭环

纸质文档数字化实操指南:从扫描到可检索PDF的完整闭环

2026/7/15 5:58:37

1. 这不是扫描仪说明书,而是一份“纸质文档重生指南” 你手边是不是还堆着一摞去年的合同、三份不同版本的项目立项书、五张盖了红章但字迹模糊的验收单?它们安静地躺在文件柜里,像沉睡的纸片幽灵——看得见,摸得着,却…

GitHub加速插件终极指南:3分钟解决国内访问GitHub缓慢问题

GitHub加速插件终极指南:3分钟解决国内访问GitHub缓慢问题

2026/7/15 5:58:37

GitHub加速插件终极指南:3分钟解决国内访问GitHub缓慢问题 【免费下载链接】Fast-GitHub 国内Github下载很慢,用上了这个插件后,下载速度嗖嗖嗖的~! 项目地址: https://gitcode.com/gh_mirrors/fa/Fast-GitHub 对于国内开发…

鸣潮自动化辅助工具:5个核心功能彻底解放你的双手

鸣潮自动化辅助工具:5个核心功能彻底解放你的双手

2026/7/15 5:58:37

鸣潮自动化辅助工具:5个核心功能彻底解放你的双手 【免费下载链接】ok-wuthering-waves 鸣潮 后台自动战斗 自动刷声骸 一键日常 Automation for Wuthering Waves 项目地址: https://gitcode.com/GitHub_Trending/ok/ok-wuthering-waves 你是否厌倦了在《鸣潮…

具身智能:定义、特征与原理详解(15)

具身智能:定义、特征与原理详解(15)

2026/7/15 5:58:37

前沿技术探索:AI智能体视觉(TVA,Transformer-based Vision Agent)是依托Transformer架构与“因式智能体”理论所构建的颠覆性工业视觉技术,是集深度强化学习(DRL)、卷积神经网络(CNN…

激光演进六十年:从红宝石到量子前沿

激光演进六十年:从红宝石到量子前沿

2026/7/15 5:48:37

1. 红宝石激光器的诞生:一束改变世界的光1960年5月16日,美国休斯研究实验室的物理学家西奥多迈曼按下电源开关,一块粉红色红宝石晶体突然迸发出人类历史上第一束相干光。这个看似简单的实验装置——由螺旋形氙灯包裹的红宝石棒和两端的银镀层…

Unity游戏文本翻译架构深度解析:XUnity.AutoTranslator的技术实现与工程实践

Unity游戏文本翻译架构深度解析:XUnity.AutoTranslator的技术实现与工程实践

2026/7/14 10:03:09

Unity游戏文本翻译架构深度解析:XUnity.AutoTranslator的技术实现与工程实践 【免费下载链接】XUnity.AutoTranslator 项目地址: https://gitcode.com/gh_mirrors/xu/XUnity.AutoTranslator XUnity.AutoTranslator作为Unity游戏社区中最成熟的文本翻译解决方…

openEuler Raspberry Pi Kernel设备驱动开发指南:为树莓派硬件添加支持

openEuler Raspberry Pi Kernel设备驱动开发指南:为树莓派硬件添加支持

2026/7/13 20:43:19

openEuler Raspberry Pi Kernel设备驱动开发指南:为树莓派硬件添加支持 【免费下载链接】raspberrypi-kernel It provides openEuler kernel source for Raspberry Pi 项目地址: https://gitcode.com/openeuler/raspberrypi-kernel 前往项目官网免费下载&…

openEuler系统集成测试实战:基于smoke-test套件的环境验证技巧

openEuler系统集成测试实战:基于smoke-test套件的环境验证技巧

2026/7/15 0:26:43

openEuler系统集成测试实战:基于smoke-test套件的环境验证技巧 【免费下载链接】integration-test The repo contains test suits for system integration test 项目地址: https://gitcode.com/openeuler/integration-test 前往项目官网免费下载:…

【LINUX】驱动

【LINUX】驱动

2026/7/15 0:08:14

【LINUX驱动】【字符设备】【中断】【Platform】【网课 设备树】【GPIO】【PINCTRL】【INPUT】【IIC】【SPI】【网络驱动】【屏幕驱动】【一 设备树】【二 内核模块编译】【三 基本驱动框架】【四 Platform总线设备驱动框架】【五 驱动子系统】【六 综合】

【1982-2026】全国高精度建筑轮廓|村级精度|SHP矢量

【1982-2026】全国高精度建筑轮廓|村级精度|SHP矢量

2026/7/15 0:08:14

🔍 数据简介 本次分享1982-2026年全国村级精度建筑轮廓矢量数据,覆盖全国各省市区县,到村级别精细,为2026年最新实时采集成果,非网传仅60/77个城市的老旧数据。 数据含带高度/不带高度双版本,单体建筑边界精…

【1975-2026】全国水系水路数据|河流/水库/运河|SHP矢量

【1975-2026】全国水系水路数据|河流/水库/运河|SHP矢量

2026/7/15 0:08:14

🔍 数据简介 本次分享1975-2026年全国高精度水系水路矢量数据,覆盖全国全域,包含河流、水系、水库、运河、湿地、冰川、沟渠等全类别水文要素。 数据集包含双层矢量图层,字段分类清晰、要素齐全,支持2013-2026逐年完整…