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

舵机控制中的半正弦(S型)速度曲线及其在STM上的应用

先回顾三次握手建立连接核心流程实际版为了让挥手流程衔接更顺畅咱们先快速回顾三次握手的实际核心避免上下文脱节第一步客户端→服务器客户端发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三次握手与四次挥手本质都是围绕“可靠传输”设计的流程三次握手通过双向确认确保双方通信能力正常为数据传输铺路四次挥手通过分步确认确保双向数据流都已终止避免数据丢失或残留。徘钨诰刂

相关文章:

舵机控制中的半正弦(S型)速度曲线及其在STM上的应用

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

终极B站字幕下载指南:如何轻松获取和转换CC字幕文件

终极B站字幕下载指南:如何轻松获取和转换CC字幕文件 【免费下载链接】BiliBiliCCSubtitle 一个用于下载B站(哔哩哔哩)CC字幕及转换的工具; 项目地址: https://gitcode.com/gh_mirrors/bi/BiliBiliCCSubtitle 你是否经常在B站观看精彩的教学视频,想…...

20亿美元AI收购案被禁!中国AI创业与外资投资路径将改写?

2026年,Manus收购案被禁2026年4月27日,国家发展改革委(外商投资安全审查工作机制办公室)正式对外资收购Manus项目作出禁止投资决定,并明确要求撤销该交易。这一裁决不仅是对单一商业交易的否决,更是中国在人…...

像素语言·跨维传送门应用场景:全球开发者社区多语技术问答机器人

像素语言跨维传送门应用场景:全球开发者社区多语技术问答机器人 1. 产品核心价值 像素语言跨维传送门(Pixel Language Portal)是一款专为开发者社区设计的智能翻译工具,它通过独特的16-bit像素冒险界面和强大的腾讯混元MT-7B翻译引擎,为技术…...

operator new 和 placement new

C 动态内存管理深度解析:从 operator new 到 placement new一、概念正本清源:new 表达式 vs operator new 函数很多初学者把 "new" 当作一个不可分割的整体,但实际上 C 把动态内存的两个职责拆得很开:步骤new 表达式 (n…...

Python大模型微调框架选型决策树(2024权威Benchmark实测TOP5框架吞吐/显存/收敛性对比)

更多请点击: https://intelliparadigm.com 第一章:Python大模型本地微调框架选型决策树总览 在资源受限的本地环境中开展大语言模型微调,框架选型直接决定训练可行性、显存效率与工程可维护性。当前主流开源方案在量化支持、LoRA/QLoRA集成度…...

如何快速配置HS2-HF_Patch:游戏增强补丁完整指南

如何快速配置HS2-HF_Patch:游戏增强补丁完整指南 【免费下载链接】HS2-HF_Patch Automatically translate, uncensor and update HoneySelect2! 项目地址: https://gitcode.com/gh_mirrors/hs/HS2-HF_Patch 你是否厌倦了日文原版Honey Select 2的游戏体验&am…...

告别僵硬动画!用UE5.1的IK重定向器,5分钟让你的自定义角色“活”起来

告别僵硬动画!用UE5.1的IK重定向器,5分钟让你的自定义角色“活”起来 在游戏开发或影视动画制作中,一个精心设计的角色模型如果只能僵硬地站立,就像一尊没有灵魂的雕塑。传统动画制作流程往往需要美术师逐帧调整,耗时耗…...

收藏级|2026最新大模型应用开发学习指南(小白/程序员必看,转行避坑直达面试)

对于程序员和想入行AI的小白来说,2026年的行业共识愈发清晰:AI赛道不可逆,而Agent作为当前大模型应用的核心爆发点,早已成为就业市场的“香饽饽”——掌握Agent开发技能,无论是转岗AI、薪资翻倍,还是提升自…...

终极游戏资源编辑指南:用ExtractorSharp轻松制作DNF补丁

终极游戏资源编辑指南:用ExtractorSharp轻松制作DNF补丁 【免费下载链接】ExtractorSharp Game Resources Editor 项目地址: https://gitcode.com/gh_mirrors/ex/ExtractorSharp ExtractorSharp是一款功能强大的游戏资源编辑器,专门为游戏MOD爱好…...

用Java正则表达式搞定L1-064‘估值一亿的AI核心代码’:从字符串处理到AI对话模拟

用Java正则表达式解析AI对话逻辑:从字符串处理到智能应答模拟 在算法竞赛和实际开发中,字符串处理往往是绕不开的难题。PTA平台上的L1-064题"估值一亿的AI核心代码"就是一个典型例子——它要求我们将原始输入转换为符合特定规则的AI应答。这道…...

4G无线串口对传模块:RS232/485通讯,工业现场便捷组网

4G无线串口对传模块是一类工业级无线通信设备,实现两台或多台设备之间串口数据的远程、透明无线传输。使用时通常成对出现,一端接A设备,另一端接B设备,配对后就能让它们像用串口线直接连接一样,互相收发数据。一、功能…...

Spring Boot多租户实战指南(Tenant-Aware DataSource深度剖析)

更多请点击: https://intelliparadigm.com 第一章:Java 多租户数据安全隔离 在云原生与 SaaS 架构普及的背景下,Java 应用实现多租户(Multi-tenancy)已成为常态。数据安全隔离是其核心挑战——必须确保租户 A 无法访…...

告别龟速下载!PyCharm里配置Python库的5种方法实测(含阿里云/清华源对比)

PyCharm高效配置Python库的终极指南:5种方法深度评测与实战技巧 每次在PyCharm里安装Python库时,进度条像蜗牛一样缓慢移动,你是否也经历过这种煎熬?作为Python开发者,我们每天都要与各种第三方库打交道,但…...

告别繁琐!用ApkInfoQuick快速提取APK关键信息

我开发了一个开源 APK 信息查看工具:ApkInfoQuick 最近我做了一个小工具,名字叫 ApkInfoQuick。 它是一个面向 Android APK 文件的信息查看与解析工具,支持桌面 GUI,也支持 CLI 命令行。项目已经准备开源放到 GitHub 上&#xff0…...

智能图片去重工具AntiDupl.NET:4大核心模块高效释放存储空间终极指南

智能图片去重工具AntiDupl.NET:4大核心模块高效释放存储空间终极指南 【免费下载链接】AntiDupl A program to search similar and defect pictures on the disk 项目地址: https://gitcode.com/gh_mirrors/an/AntiDupl 你是否经常面临手机相册被重复照片塞满…...

告别VL31N手工操作:用ABAP脚本批量创建内向交货单的自动化实践

告别VL31N手工操作:用ABAP脚本批量创建内向交货单的自动化实践 每天早晨,当SAP SD模块的业务员小王打开VL31N事务码准备处理采购到货时,总会被几十个待创建的交货单淹没。重复输入采购订单号、核对物料信息、点击保存——这样的机械操作不仅耗…...

抖音视频批量下载终极指南:4步打造你的专属内容库

抖音视频批量下载终极指南:4步打造你的专属内容库 【免费下载链接】douyin-downloader A practical Douyin downloader for both single-item and profile batch downloads, with progress display, retries, SQLite deduplication, and browser fallback support. …...

GHelper完整指南:3步轻松掌控华硕笔记本性能与续航

GHelper完整指南:3步轻松掌控华硕笔记本性能与续航 【免费下载链接】g-helper Lightweight, open-source control tool for ASUS laptops and ROG Ally. Manage performance modes, fans, GPU, battery, and RGB lighting across Zephyrus, Flow, TUF, Strix, Scar,…...

MAXIM美信 MAX30101EFD+T OLGA14 心率传感器

优势与特性 LED反射式心率监测器和脉搏血氧传感器 小巧的5.6mmx3.3mmx1.55mm 14引|脚光学模块集成盖板玻璃,实现最佳、稳健性能 移动设备超低功耗运行 可编程采样率和LED电流以节省电源 低功耗心率监测器(小于1毫瓦)超低关断电流(典型值0.7uA) 快速数据输出能力 高采…...

手机号查询QQ号完整指南:3分钟找回遗忘账号的终极解决方案

手机号查询QQ号完整指南:3分钟找回遗忘账号的终极解决方案 【免费下载链接】phone2qq 项目地址: https://gitcode.com/gh_mirrors/ph/phone2qq 你是否曾因忘记QQ号而无法登录重要账号?或者更换手机后,只记得手机号却找不到对应的QQ账…...

别再只用2D地图了!手把手教你用Vue3+ECharts GL打造可交互的3D中国地图(附完整代码和天空盒资源)

突破平面边界:用Vue3与ECharts GL构建沉浸式3D地理可视化方案 当数据可视化遇上三维空间,地图不再只是冰冷的平面轮廓。想象一下,你的用户可以通过鼠标拖拽360度旋转查看地形起伏,点击省份时区域会动态凸起响应,飞鱼线…...

生图新王GPT Image 2正式发布!彻底告别中文乱码,附无魔法国内稳定渠道

AI绘图圈又迎来了史诗级大地震!出乎所有人意料,OpenAI这次连发布会都没开,GPT-Image-2 就已经全量开放测试了。 目前,所有用户均可免费体验,但无论是免费用户还是付费用户,都会面临严格的额度限制。免费用…...

戴尔笔记本风扇终极管理指南:免费开源智能散热解决方案

戴尔笔记本风扇终极管理指南:免费开源智能散热解决方案 【免费下载链接】DellFanManagement A suite of tools for managing the fans in many Dell laptops. 项目地址: https://gitcode.com/gh_mirrors/de/DellFanManagement 你是否曾因戴尔笔记本风扇噪音过…...

期刊推荐:Journal of Artificial Intelligence and Soft Computing Research(ISSN: 2083-2567)

学科领域: 计算机-人工智能 期刊类型: SCI/SSCI/AHCI 收录数据库: SCI(SCIE) ISSN: 2083-2567 中科院: 2区 影响因子: 2.4 JCR: Q3 咨询获取专业投稿服务 Journal of Artificial Intelli…...

ImageGlass:Windows平台终极开源图像浏览解决方案,高效支持90+格式

ImageGlass:Windows平台终极开源图像浏览解决方案,高效支持90格式 【免费下载链接】ImageGlass 🏞 A lightweight, versatile image viewer 项目地址: https://gitcode.com/gh_mirrors/im/ImageGlass 在数字图像处理日益普及的今天&am…...

智能制造系统推广的核心的十个关键问题

推广智能制造系统(尤其是迈向资产共生阶段)时,不能只关注设备买入,急须解决以下十个关乎“成败”的核心问题:数据孤岛与协议兼容问题:底层设备品牌庞杂(Fanuc, Siemens, Omron 等)&a…...

Linux下Intel AX101 WiFi 6驱动问题解决方案

1. 问题背景:Alder Lake-N迷你主机在Linux下的WiFi 6兼容性问题最近搭载Intel Alder Lake-N处理器(如N95、N100、Core i3-N300/N305)的迷你主机因其出色的性价比受到广泛关注。这类设备通常配备Intel AX101无线模块,支持WiFi 6&am…...

Git误提交恢复

先执行语句: git reset --mixed HEAD~1add了,也commit了,发现crmeb.zip忘记删除,这个文件不用提交实际执行语句...

别再乱刷了!手把手教你读懂Android卡刷包里的updater-script脚本(附权限设置详解)

深度解析Android卡刷包:从updater-script脚本到安全刷机实践 在Android设备刷机过程中,updater-script脚本扮演着至关重要的角色。这个看似简单的文本文件实际上控制着整个刷机流程的每一个细节操作。对于想要深入了解刷机原理或自行定制ROM的用户来说&a…...