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

龙芯k - 走马观碑组MPU驱动移植僖

先回顾三次握手建立连接核心流程实际版为了让挥手流程衔接更顺畅咱们先快速回顾三次握手的实际核心避免上下文脱节第一步客户端→服务器客户端发SYN报文发起连接内核分配临时端口、创建TCB状态从CLOSED→SYN-SENT第二步服务器→客户端服务器收SYN后发SYNACK报文回应创建TCB状态从LISTEN→SYN-RCVD第三步客户端→服务器客户端收SYNACK后发ACK报文可带数据状态从SYN-SENT→ESTABLISHED服务器收ACK后状态→ESTABLISHED连接正式建立。连接建立后双方就可以愉快传输数据了。而当数据传完要关闭连接时因为TCP是“全双工通信”双方可同时发数据不能像建立连接那样简化为三次必须通过四次交互确认双方都不再发数据这就是四次挥手的由来。前置补充四次挥手的核心前提与关键概念挥手前先明确两个核心点避免理解偏差1. 全双工通信与关闭逻辑TCP是全双工协议客户端和服务器可同时发送数据。因此关闭连接时要分别确认“客户端→服务器”和“服务器→客户端”两个方向的数据流都已终止不能一次性关闭双向连接。2. 新增标记位FIN与状态挥手过程除了用到ACK标记位还会用到新的标记位FINFinish结束同时涉及几个新的TCP状态核心如下【FIN1】表示发送方已无数据要发请求关闭自己这边的数据流【FIN-WAIT-1】发送FIN后等待对方ACK的状态【CLOSE-WAIT】收到对方FIN后确认关闭请求等待自己这边数据发完再发FIN【TIME-WAIT】客户端最后发完ACK后等待2MSL报文最大生存时间确保对方收到FIN的ACK避免报文丢失导致重发。四次挥手全流程社恐式告别实际底层交互咱们依然以“手机退出微信”为例一边用通俗对话理解逻辑一边补充操作系统内核、报文交互等实际细节兼顾易懂性与技术深度。第一步主动方发起告别请求FINACK报文主动关闭场景你点击微信退出登录客户端手机作为主动关闭方告知服务器“我这边数据发完了要关连接了”。实际行为微信客户端程序调用close()接口通知内核关闭连接。客户端内核做两件事停止发送新数据将未发完的数据一次性发完然后构造FINACK报文FIN1表示关闭自身数据流ACK1确认之前收到的服务器数据序号sequu是客户端最后一次发数据的序号1确认号ackvv是服务器最后一次发数据的序号1发送报文后释放部分资源仅保留接收数据的能力防止服务器还有数据要发。拟人对话客户端温和“服务器大佬我这边数据都发完了要关我这边的连接了FIN1你之前发的内容我都收到了ACK1你还有要发的吗”状态变化客户端TCP状态从ESTABLISHED→FIN-WAIT-1开始计时等待服务器的ACK回应。第二步被动方确认告别请求ACK报文等待自身数据发完场景微信服务器收到客户端的告别请求先确认“收到了”同时继续处理自己这边未发完的数据比如最后的登录状态同步。实际行为服务器内核收到FINACK报文后校验序号、确认号无误然后构造ACK报文ACK1序号seqv确认号acku1告知客户端“你的FIN我收到了你可以不用等我回应了”发送ACK后服务器不会立即关闭连接而是继续发送自身未完成的数据此时服务器仅关闭“客户端→服务器”的数据流自身仍可向客户端发数据。拟人对话服务器沉稳“收到你的告别请求了ACK1我这边还有点数据没发完你先等我一下发完了我再告诉你。”状态变化服务器TCP状态从ESTABLISHED→CLOSE-WAIT客户端收到ACK后状态从FIN-WAIT-1→FIN-WAIT-2等待服务器发完数据后发起的FIN报文。第三步被动方发起告别请求FINACK报文被动关闭场景服务器发完所有数据告知客户端“我这边也发完了咱们可以彻底关连接了”。实际行为服务器发完剩余数据后内核构造FINACK报文FIN1表示关闭自身数据流ACK1确认之前的交互序号seqww是服务器最后一次发数据的序号1确认号acku1与第二步的ack一致因为客户端此时已无数据发送发送给客户端。拟人对话服务器完成收尾“我这边数据也发完了要关我这边的连接了FIN1你之前的消息我都收到了ACK1咱们可以告别了。”状态变化服务器TCP状态从CLOSE-WAIT→LAST-ACK开始计时等待客户端的最终ACK确认。第四步主动方最终确认告别ACK报文等待超时场景客户端收到服务器的告别请求确认双方都无数据要发给出最终回应同时等待一段时间确保服务器收到回应。实际行为客户端内核收到FINACK报文后校验无误然后构造ACK报文ACK1序号sequ1确认号ackw1告知服务器“你的FIN我收到了你可以安全关闭了”发送给服务器发送ACK后客户端不立即关闭连接而是进入TIME-WAIT状态等待2MSL通常是2分钟左右确保服务器能收到ACK若服务器没收到会重发FIN客户端可再次回应。等待超时后释放所有资源和TCB。拟人对话客户端放心“收到你的告别了ACK1我等一会儿再挂确保你能收到我的回应咱们下次见”状态变化客户端TCP状态从FIN-WAIT-2→TIME-WAIT等待2MSL→CLOSED服务器收到ACK后状态从LAST-ACK→CLOSED释放所有资源至此双向连接完全关闭。可视化流程图三次握手四次挥手全链路版结合连接建立、数据传输、连接关闭的完整链路用Mermaid图还原内核状态、报文交互全流程暂时无法在豆包文档外展示此内容关键差异与核心疑问解答1. 为啥挥手要四次握手却只要三次核心原因是“全双工通信”与“连接阶段的特殊性”三次握手时服务器的SYN同步连接和ACK确认客户端可以合并为一个SYNACK报文——因为此时服务器还没有数据要发同步和确认可以一次性完成四次挥手时服务器收到客户端的FIN后不能立即发FIN可能还有数据要发只能先回一个ACK确认等数据发完后再单独发FIN因此ACK和FIN无法合并必须分成两步导致总次数变为四次。2. TIME-WAIT状态为啥要等2MSL主要是两个目的避免连接残留问题确保服务器收到最终ACK若第四步的ACK丢失服务器会在超时后重发FIN2MSL的时间足够客户端收到重发的FIN并再次回应避免旧报文干扰新连接2MSL是报文在网络中的最大生存时间等待超时后网络中该连接的所有旧报文都会失效后续新连接用相同端口也不会被干扰。3. 常见坑点实际场景补充【CLOSE-WAIT累积】服务器处于CLOSE-WAIT状态时若应用程序未及时调用close()发FIN会导致连接资源泄露大量CLOSE-WAIT状态会耗尽服务器端口【TIME-WAIT过多】高并发场景下客户端频繁关闭连接会产生大量TIME-WAIT状态可通过调整内核参数如缩短2MSL时间、开启端口复用优化【半关闭连接】若一方发了FIN但另一方还在发数据发FIN的一方会拒绝接收数据导致数据丢失因此关闭连接前需确保双方都无数据要发。总结TCP连接的“始”与“终”核心都是“可靠”TCP三次握手与四次挥手本质都是围绕“可靠传输”设计的流程三次握手通过双向确认确保双方通信能力正常为数据传输铺路四次挥手通过分步确认确保双向数据流都已终止避免数据丢失或残留。侗诤谜怕

相关文章:

龙芯k - 走马观碑组MPU驱动移植僖

先回顾:三次握手(建立连接)核心流程(实际版) 为了让挥手流程衔接更顺畅,咱们先快速回顾三次握手的实际核心,避免上下文脱节: 第一步(客户端→服务器)&#xf…...

Linux I/O 演进史:从管道到零拷贝,一篇串起个服务端核心原语俅

前言 在使用 kubectl get $KIND -o yaml 查看 k8s 资源时,输出结果中包含大量由集群自动生成的元数据(如 managedFields、resourceVersion、uid 等)。这些信息在实际复用 yaml 清单时需要手动清理,增加了额外的工作量。 使用 kube…...

如何在VS Code中高效处理JSON文件:终极编辑器插件使用指南

如何在VS Code中高效处理JSON文件:终极编辑器插件使用指南 【免费下载链接】vscode-json Json for Visual Studio Code 项目地址: https://gitcode.com/gh_mirrors/vs/vscode-json JSON作为现代开发中最常用的数据交换格式,几乎贯穿了从配置文件到…...

1980-2025年中国各区县逆温数据

1980~2025 年中国各区县逆温数据 该数据包含如下变量,各个变量的含义如下: date:日期 year:年 mnth:月 day:日 省:省份名称 省代码:省份行政区划代码 市&#xf…...

使用小龙虾来操作猿编程的遥控车怕

一、什么是 Q 饱和运算? 1. 核心痛点:普通运算的 “数值回绕” 普通算术运算(如 ADD/SUB)溢出时,数值会按补码规则 “回绕”,导致结果完全错误: 示例:int8_t 类型最大值 127 1 → 结…...

如何用Mesa在Python中快速构建智能体仿真模型:终极入门指南

如何用Mesa在Python中快速构建智能体仿真模型:终极入门指南 【免费下载链接】mesa Mesa is an open-source Python library for agent-based modeling, ideal for simulating complex systems and exploring emergent behaviors. 项目地址: https://gitcode.com/g…...

2001-2024年上市公司供应链地理距离

一家企业的供应商和客户,究竟分布在多远的空间范围内? 这一问题不仅关系到企业采购与销售网络的空间延伸程度,也关系到区域市场整合、要素跨区流动以及企业突破本地市场约束的能力。已有研究表明,企业的供应商选择和客户拓展通常会…...

如何完整获取阿里云盘Refresh Token实现自动化管理

如何完整获取阿里云盘Refresh Token实现自动化管理 【免费下载链接】aliyundriver-refresh-token QR Code扫码获取阿里云盘refresh token For Web 项目地址: https://gitcode.com/gh_mirrors/al/aliyundriver-refresh-token 阿里云盘作为国内主流的云存储服务&#xff0…...

Pixel Couplet Gen 惊艳像素春联作品集:AI与传统文化的创意碰撞

Pixel Couplet Gen 惊艳像素春联作品集:AI与传统文化的创意碰撞 1. 开篇:当像素艺术遇上传统春联 春节贴春联是中国人延续千年的传统习俗,而如今人工智能为这一古老文化注入了全新活力。Pixel Couplet Gen模型通过独特的像素艺术风格&#…...

向华为学习——解读华为战略执行全解码从规划到行动的DSTE与BLM模型集成应用方案【附全文阅读】

华为通过DSTE流程与BLM模型集成,实现战略从规划到执行的全流程管理。DSTE构建战略执行时间轴,BLM模型提供战略制定到执行框架,两者协同将长期规划拆解为年度计划,并通过绩效与资源保障闭环落地[4]。 关联阅读索引: 收藏不迷路——耗时三天完成整理 华为IPD流程体系战略解码…...

SiameseUIE效果实测:中文OCR后文本(含错别字)仍保持82%+抽取准确率

SiameseUIE效果实测:中文OCR后文本(含错别字)仍保持82%抽取准确率 1. 引言:当AI遇到不完美的中文文本 你有没有遇到过这样的情况:从扫描文档或图片中提取的中文文字,总是带着各种错别字和格式问题&#x…...

OpenClaw语音交互:百川2-13B量化模型+Whisper实现语音控制

OpenClaw语音交互:百川2-13B量化模型Whisper实现语音控制 1. 为什么需要本地语音助手? 去年冬天的一个深夜,我正在整理项目文档时突然冒出一个想法:如果能用语音直接操控电脑完成文件整理、代码执行这些重复操作,至少…...

基于LM2596的Buck电路设计

目录: 一、详细的说明 二、设计过程 1、手动计算 2、TI工具设计 三、Layout与散热 1、Layout 2、散热 四、PCBA实测 一、详细说明 LM2596 系列稳压器是为降压开关稳压器提供所有有效功能的单片集成电路,能够驱动 3A 的负载,并且拥有…...

AI语音转换个性化模型实战指南:从认知到实践的全面探索

AI语音转换个性化模型实战指南&#xff1a;从认知到实践的全面探索 【免费下载链接】Retrieval-based-Voice-Conversion-WebUI Easily train a good VC model with voice data < 10 mins! 项目地址: https://gitcode.com/GitHub_Trending/re/Retrieval-based-Voice-Conver…...

智能抖音批量下载工具:自动化无水印资源获取的高效解决方案

智能抖音批量下载工具&#xff1a;自动化无水印资源获取的高效解决方案 【免费下载链接】douyin-downloader A practical Douyin downloader for both single-item and profile batch downloads, with progress display, retries, SQLite deduplication, and browser fallback …...

Adobe-GenP 3.0:二进制智能修补技术破解创意软件授权壁垒

Adobe-GenP 3.0&#xff1a;二进制智能修补技术破解创意软件授权壁垒 【免费下载链接】Adobe-GenP Adobe CC 2019/2020/2021/2022/2023 GenP Universal Patch 3.0 项目地址: https://gitcode.com/gh_mirrors/ad/Adobe-GenP Adobe-GenP 3.0作为一款基于AutoIt脚本开发的通…...

科学/技术路线之争、天才 vs 体制、创新 vs 实用的对立故事

文章目录一、最像「交流电 vs 直流电」的路线大战1. **尼古拉特斯拉 vs 托马斯爱迪生**&#xff08;你已知的原型&#xff09;二、同级别的「史诗级科学互怼」2. **伽利略 vs 教会/亚里士多德学派**3. **牛顿 vs 莱布尼茨**4. **爱因斯坦 vs 玻尔**5. **巴斯德 vs 普歇**三、技…...

编程常见函数--求反序int(C、C++、Python版)

目录 函数功能 思路 具体步骤 变量初始化 循环条件 反序数计算 返回值 示例说明 注意事项 C C通用代码 Python代码 函数功能 该函数用于计算一个整数的反序数&#xff0c;常用于判断对称性或者反序的场景 例如&#xff0c;输入 123&#xff0c;输出 321&#xff1b;输…...

一文看懂:基于深度学习的 ISAC 波形与IRS相位联合优化Python开源代码

相关专栏 无线通信算法仿真_zero123123asd的博客-CSDN博客https://blog.csdn.net/zero123123asd/category_13148183.html 原理介绍 1. 问题背景 在通信与感知一体化(ISAC)系统中,需要同时完成: 通信任务(多用户信号传输) 雷达感知任务(波束成形/目标探测) 系统包含…...

BthPS3驱动:突破Windows壁垒,让PS3控制器焕发新生

BthPS3驱动&#xff1a;突破Windows壁垒&#xff0c;让PS3控制器焕发新生 【免费下载链接】BthPS3 Windows kernel-mode Bluetooth Profile & Filter Drivers for PS3 peripherals 项目地址: https://gitcode.com/gh_mirrors/bt/BthPS3 当PS3控制器遇上Windows&…...

Qt6 Host + Updater 更新方案(1):整体流程与交互设计

你有没有遇到过这种尴尬&#xff1a;软件提示“有新版本”&#xff0c;点了更新却失败&#xff1b;或者更新到一半程序直接卡死&#xff1b;再或者最常见的——Windows 下主程序正在运行&#xff0c;EXE 被占用&#xff0c;根本没法覆盖替换。很多 Qt 新手第一次做在线升级&…...

VUE.JS实践--事件对象和计算属性

一、什么是事件对象1.2 演示事件对象&#xff0c;在控制台输出 单击事件 的两种方法。<template><!-- 两个作用函数完全一样&#xff1a;接收事件对象 → 打印到控制台 --><!-- 按钮1&#xff1a;点击触发 greet 方法 --><button click"greet"…...

聚焦播放器全链路优化

播放器开发属于音视频领域中独立性强、技术壁垒高的方向。多线程调度各模块是避免任务堵塞、提高并发处理效率的关键。下面从全链路模块展开播放器性能优化与低延迟方案分析&#xff1a;采集模块。本地流指本地文件的读取或者是摄像头或者麦克风数据的读取。以RV1126摄像头为例…...

Zotero文献去重终极指南:如何快速清理重复条目提升研究效率

Zotero文献去重终极指南&#xff1a;如何快速清理重复条目提升研究效率 【免费下载链接】ZoteroDuplicatesMerger A zotero plugin to automatically merge duplicate items 项目地址: https://gitcode.com/gh_mirrors/zo/ZoteroDuplicatesMerger 你是否曾经在Zotero文献…...

重装 Office 必看:Win10/Win11 完美卸载 Office 2021(附视频)

不少人在使用 Office 2021 时会遇到卡顿、打不开、激活异常、功能报错等问题&#xff0c;常规修复与重置往往解决不了根源&#xff0c;最终只能选择卸载重装。但很多用户自己手动卸载时&#xff0c;经常遇到卸载不干净、注册表残留、再次安装冲突、激活失败等麻烦&#xff0c;折…...

为什么要做 GeoPipeAgent贾

指令替换 项目需求&#xff1a;将加法指令替换为减法 项目目录如下 /MyProject ├── CMakeLists.txt # CMake 配置文件 ├── build/ #构建目录 │ └── test.c #测试编译代码 └── mypass2.cpp # pass 项目代码 一&#xff0c;测试代码示例 test.c // test.c #includ…...

告别 C 盘焦虑:Windows 关闭休眠 + 清理休眠文件,安全又高效

很多 Windows 用户都遇到过 C 盘莫名变红、清理半天只腾出几百 MB 的尴尬&#xff0c;却不知道系统里藏着一个动辄占用数 GB 到十几 GB的隐形大户 —— 休眠文件hiberfil.sys。它是系统休眠功能的核心文件&#xff0c;会把内存数据完整写入硬盘&#xff0c;方便快速恢复工作状态…...

3步掌握终极鼠标悬停翻译神器:MouseTooltipTranslator完整使用指南

3步掌握终极鼠标悬停翻译神器&#xff1a;MouseTooltipTranslator完整使用指南 【免费下载链接】MouseTooltipTranslator Mouseover Translate Any Language At Once - Chrome Extension: PDF Translator, EBOOK, EPUB, OCR, TTS, NETFLIX, YOUTUBE DUAL SUBTITLES, GOOGLE DOC…...

运维系列【仅供参考】:Centos之nohup 后台运行程序

Centos之nohup 后台运行程序 Centos之nohup 后台运行程序 摘要 nohup命令: 2>&1的问题 参考以下文章 Centos之nohup 后台运行程序-yellowcong 2>&1的问题 不输出文件 输出文件 参考以下文章 nohup /dev/null 2>&1 含义详解 摘要 正文 Centos之nohup 后台…...

OpenClaw多任务引擎:并行调用SecGPT-14B完成大规模日志分析

OpenClaw多任务引擎&#xff1a;并行调用SecGPT-14B完成大规模日志分析 1. 为什么需要并行日志分析 上周我遇到了一个棘手的问题——需要分析一组总量超过30GB的Nginx访问日志。当我尝试用传统方法处理时&#xff0c;单线程脚本跑了6小时才完成初步解析&#xff0c;而更复杂的…...