TCP协议栈管理、文件符表映射机制与TCP资源关闭流程介绍
文章目录一、进程与内核1.用户态的Java程序进程2.内核态的操作系统内核2.1操作系统2.1.1内核二、文件描述符与表引用1.文件描述符2.文件描述符表3.引用比例三、TCP资源管理与连接维护1.TCP协议栈1.1TCB1.1.1端点1.1.1.1TCP连接状态四、Socket引用纵深与端点分布1.Socket引用纵深2.Socket端点分布2.1监听Socket2.2连接socket五、资源关闭与连接生命1.直接关闭1.1直关资源2.执行关闭2.1执关资源2.2执关流程2.2.1无引用2.2.2释放2.2.2.1正常释放2.2.2.2异常释放2.2.2.2.1重传多次失败2.2.2.2.2收到RST3.进程Socket与TCP连接的生命周期六、操作顺梯纵深执行一、进程与内核一台主机应用层里面可以有很多用户态的Java程序进程但传输层的内核态的操作系统内核只有一个1.用户态的Java程序进程Java程序代码在JVM运行起来后,会形成用户态的进程里面有Java对象堆栈线程用户态缓冲区JVM状态2.内核态的操作系统内核2.1操作系统操作系统由内核系统库系统工具服务组成2.1.1内核内核是操作系统最核心的部分负责CPU调度内存管理-执行资源回收、关闭fd、释放页表...文件系统网络协议栈-TCP协议栈就在内核里面、管理socket与TCP状态...驱动进程管理-回收进程...二、文件描述符与表引用1.文件描述符文件描述符是在操作系统内核管理资源的编号、提供到进程指向内核资源的整数2.文件描述符表操作系统内核 存储每个进程一张的文件描述符表,维护里面文件描述符内核资源的映射进程A的文件描述符表fd0 - 标准输入fd1 - 标准输出fd2 - 标准错误fd3 - 某个文件...fd7 - 某个socket3.引用比例1、文件描述符表与进程,一对一对应2、文件描述符表里的文件描述符与进程里的对象,一对一引用3、文件描述符表里映射的内核资源被多个表里的多个文件描述符一起,一对多引用三、TCP资源管理与连接维护1.TCP协议栈操作系统内核里的TCP协议栈 存管 所有在此主机里的 TCB端点里面进行TCP协议的核心工作TCP序号ACK重传滑动窗口TCP状态机FINSYN1.1TCBTCB TCP Control Block结构体包着端点保存 维护端点的TCP协议对向连接状态 的数据本地IP本地端口对方IP对方端口当前TCP状态:ESTABLISHED、FIN_WAIT_1、TIME_WAIT...发送序号:SND.NXT最早未确认序号:SND.UNA接收下一个期望序号:RCV.NXT发送窗口接收窗口拥塞窗口重传计时器TCP选项:MSS、窗口扩大、SACK...1.1.1端点端点能收发数据1.1.1.1TCP连接状态双端处于TCP协议约定的对向连接状态时就认为建立了TCP的逻辑连接两边主机的操作系统内核里的TCP协议栈里面分别存储管理着各自的TCB客户端-192.168.1.10 : 50000、服务器-1.2.3.4 : 8080双方分别用 源IP、源端口、目的IP、目的端口 四元组标识交流来回报文,调整两端TCB状态,保持在TCP协议的对向连接状态就建立了逻辑的TCP连接网络上不存在全局的TCP连接对象,它两端的引用分别放在,两边的内核TCP协议栈里面各自的一个TCB,引用同一个通道的两端进行对连区分TCP连接 是逻辑上的双端关系TCB 是每端本地保存的状态操作系统里的PCB 是进程控制块保存PID进程状态寄存器上下文调度信息内存信息文件描述符表四、Socket引用纵深与端点分布1.Socket引用纵深进程里的Socket对象是Java程序操作网络的接口存在JVM的堆里,处于用户态用文件描述符指向 操作系统内核里,该进程的文件描述符表里,映射的内核Socket内核里的Socket对象维护 关联的TCB,里面端点的TCP连接状态Socket.write(7, data, len)进程Socket对象↓包装与关联 底层的native socket资源↓(触发系统调用内核)用进程Socket对象底层持有的文件描述符fd7 映射文件描述符表到内核Socket对象↓内核Socket对象关联到TCB↓往里维护写TCP数据2.Socket端点分布2.1监听Socket进程ServerSocket映射的内核监听socket,关联的TCB处于LISTEN状态监听socket*:8080LISTEN监查,来向连接状态的TCB交流握手报文调整TCB对向状态听建,回向连接状态的TCB 在此边2.2连接socket连接socketAserver:8080 - clientA:50001ESTABLISHED连接socketBserver:8080 - clientB:50002ESTABLISHED连接socketCserver:8080 - clientC:50003ESTABLISHED五、资源关闭与连接生命从上往下顺梯传递关闭操作地 关闭 进程到内核一路的资源1.直接关闭一步地直做关闭1.1直关资源进程对象文件描述符:文件描述符在文件描述符表里存储着一步里无引用地直接关闭2.执行关闭多步地执完关闭2.1执关资源内核资源:内核资源在文件描述符表里被映射,但不在表里存储的多步里先无引用地执行关闭2.2执关流程2.2.1无引用进程关闭↓在里面的进程对象是先关闭的↓紧接它们引用在内核里的,该进程的文件描述符表里的文件描述符,就无引用地直接关闭了↓内核资源等到所有引用它的文件描述符都关闭完,无引用指向后才开始释放2.2.2释放2.2.2.1正常释放ESTABLISHED↓FIN_WAIT...↓CLOSED↓Socket关闭后,关联的TCB一起关闭里面维护的TCP连接状态才消失了连接的此端单断2.2.2.2异常释放2.2.2.2.1重传多次失败↓连接超时↓CLOSED↓关闭TCB2.2.2.2.2收到RST↓连接abort↓关闭TCB3.进程Socket与TCP连接的生命周期进程Socket对象生命周期TCP连接状态生命周期某个进程[进程Socket对象]关闭它的内核资源[内核Socket对象] 可能还有其它进程的文件描述符在引用、与无引用后可能还在释放中而还存在[关联的TCB,及里面维护的TCP连接状态]六、操作顺梯纵深执行操作 从进程上始 顺梯传递 纵深至内核终地 一路执行

相关新闻

基于 Java Spring Boot 的幼儿早教微信小程序设计与实现

基于 Java Spring Boot 的幼儿早教微信小程序设计与实现

温馨提示:本人主页置顶文章(点我)开头有 CSDN 平台官方提供的学长联系方式的名片! 1. 引言 随着移动互联网的普及和微信生态的快速发展,微信小程序凭借其即用即走、无需下载安装、传播便捷等优势,已成为教育服务领域的重要载体。…

2026/9/24 17:52:45 阅读更多 →
用AI生成一个sql管理工具

用AI生成一个sql管理工具

创建的项目:https://github.com/yinlamei/SqlAssistantWpf.git 1、创建项目 提示词: SqlAssistant.sln ├── SqlAssistant.UI.csproj # WPF 主项目:View ViewModel ├── SqlAssistant.Application.csproj # 应用服务层…

2026/9/24 17:51:45 阅读更多 →
JVM(Java Virtual Machine)

JVM(Java Virtual Machine)

目录 JVM-Java虚拟机/解释器 一次编写,到处编译: 一次编写,到处执行: JVM三个核心内容(面试常考) 1.JVM内存区域划分 1.程序计数器 2.栈 虚拟机栈 栈帧 本地方法栈 3.堆 4.元数据区 类的元信息…

2026/9/24 17:51:45 阅读更多 →

最新新闻

基于深度学习的Wiki中文语料Word2Vec词向量模型训练实战与避坑指南

基于深度学习的Wiki中文语料Word2Vec词向量模型训练实战与避坑指南

简介:一套面向自然语言处理初学者的课程设计资源,基于Wiki中文语料,用Python完整实现word2vec向量模型的构建流程,涵盖开发环境准备、数据获取与预处理、中文分词、模型训练与测试等关键环节。压缩包共8个文件,核心为4…

2026/9/24 18:33:19 阅读更多 →
电商系统选型:定制开发与SaaS的博弈,如何做出理性决策

电商系统选型:定制开发与SaaS的博弈,如何做出理性决策

这几年帮不少电商团队做过系统选型评估,几乎每次都会被问到同一个问题:到底是找中博软件开发这类公司做一套定制电商系统,还是直接上主流SaaS厂商的现成方案?这个问题没有标准答案,但选错的代价很大——轻则多花几十万…

2026/9/24 18:33:19 阅读更多 →
Spring Boot整合Redis配置详解:从连接池到序列化避坑指南

Spring Boot整合Redis配置详解:从连接池到序列化避坑指南

1. 先从基础说起:Redis装好了,后面才不会反复折腾 聊到Redis的Spring配置,其实很多问题不是出在Spring代码上,而是Redis基础环境没搭好。我见过不少团队把代码层面排查了个遍,最后发现是本地Redis是Windows老版本&…

2026/9/24 18:33:19 阅读更多 →
MATLAB实现K-means聚类:从原理到可视化全流程解析

MATLAB实现K-means聚类:从原理到可视化全流程解析

简介:K均值聚类是数据分析和机器学习领域最常用的无监督学习算法之一,这份以MATLAB为开发语言的代码包完整演示了多维矩阵聚类与可视化输出的实现过程。压缩包为rar格式,共7个文件,其中5个为.m脚本文件,2个为.mat数据文…

2026/9/24 18:33:19 阅读更多 →
平台工程选型实录:从Railway迁移到自托管Coolify

平台工程选型实录:从Railway迁移到自托管Coolify

选型这件事,我最怕听到的就是“XX平台很好用,大家都用那个”。平台工程本身聊的是交付链路、成本结构、控制边界,这三个东西在不同团队手里权重完全不一样。我最近刚把手里几个项目的部署平台从 Railway 迁走,中间也认真对比过 Re…

2026/9/24 18:33:19 阅读更多 →
MATLAB环境下BP神经网络预测:ANN.m脚本从原理到实战

MATLAB环境下BP神经网络预测:ANN.m脚本从原理到实战

简介:一款基于MATLAB的人工神经网络(ANN)预测源码,面向机器学习初学者、数据科学爱好者及需要开展预测分析的学生和工程师,可用于回归、分类或趋势预测等场景。资源包仅含单个ANN.m文件,压缩后大小1KB&…

2026/9/24 18:32:18 阅读更多 →

日新闻

基于YOLOv8的渔船作业监控系统:从环境搭建到边缘部署全流程

基于YOLOv8的渔船作业监控系统:从环境搭建到边缘部署全流程

简介:这是一套面向计算机、人工智能、自动化等专业学生与教师的毕业设计级项目资源,围绕YOLOv8实现渔船作业监控系统,可用于毕设、课程设计、大作业或项目立项演示。压缩包共97个文件,约24.21MB,以70个Python源码文件为…

2026/9/24 0:00:19 阅读更多 →
单细胞注释实战:基于Scanpy的标记基因与参考映射流程解析

单细胞注释实战:基于Scanpy的标记基因与参考映射流程解析

简介:一份基于单细胞RNA测序数据的细胞类型注释算法研究Python毕业设计源码,针对计算机相关专业正在做毕设或需要项目实战的学习者,可用于课程设计与期末大作业。项目代码完整、经导师指导评审通过,可直接运行,覆盖数据…

2026/9/24 0:00:19 阅读更多 →
C#源生成器实战:用增量生成器替代反射,告别AOT崩溃

C#源生成器实战:用增量生成器替代反射,告别AOT崩溃

第一次在项目里被反射卡住,是在一个老旧的WinForms模块里:几十个类依赖PropertyChanged通知,运行时反射读属性、发通知,每次启动慢半拍不说,一上.NET Native/AOT裁剪模式几乎全面崩盘。后来我把这段逻辑全部改成C#源生…

2026/9/24 0:00:19 阅读更多 →

周新闻

Flutter for OpenHarmony游戏卡片渐变背景实战:从原理到性能优化

Flutter for OpenHarmony游戏卡片渐变背景实战:从原理到性能优化

直接铺开项目本身吧。这几个月我一直在折腾一件事:用Flutter给OpenHarmony做一款游戏集合类的App,说白了就是把若干小游戏塞进一个壳里,用统一入口分发。这个方向本身不算新鲜,真正让我花了不少心思的,是首页那堆游戏卡…

2026/9/24 14:34:13 阅读更多 →
Word表格编号全攻略:从列表编号到题注交叉引用

Word表格编号全攻略:从列表编号到题注交叉引用

写Word文档,最让人头疼的往往是那些“看起来不起眼”的小问题。比如表格编号这事:今天在表后面多加了两个空白行,明天给客户交稿前发现整个章节的编号全部错位,光是挨个改序号就能耗掉大半个下午。我前阵子帮人整理一份上百页的技…

2026/9/24 9:10:42 阅读更多 →
从第一个站到第二个站:独立开发者的静态网站选型与落地实践

从第一个站到第二个站:独立开发者的静态网站选型与落地实践

1. 项目概述1.1 核心需求解析做独立开发者这几年,说实话,第一个网站上线的那天晚上我兴奋得没睡着。但等它跑了半年,流量惨淡、功能臃肿、代码自己都懒得看第二遍之后,我才慢慢琢磨明白一个道理:第一个网站是练手&…

2026/9/24 14:33:56 阅读更多 →

月新闻

持续集成 流水线自动化与 声明式交付 实践:原型怎样变成可用功能

持续集成 流水线自动化与 声明式交付 实践:原型怎样变成可用功能

持续集成 流水线自动化与 声明式交付 实践:原型怎样变成可用功能分类:[AI/大模型]细分主题:AI 增强型 CI/CD 流水线自动化与 GitOps 实践:Agent 工作流、工具调用与任务拆解:从原型到生产的验收清单很多团队在尝试用大…

2026/9/24 12:50:34 阅读更多 →
容器编排 生产环境运维与排障实战:复盘记录怎样真正派上用场

容器编排 生产环境运维与排障实战:复盘记录怎样真正派上用场

容器编排 生产环境运维与排障实战:复盘记录怎样真正派上用场分类:[工程技术]细分主题:Kubernetes 生产环境运维与排障实战:可复制的项目复盘模板与决策记录大部分团队的事故复盘报告,最后都变成了躺在 Confluence 或钉…

2026/9/24 14:33:48 阅读更多 →
容器 容器化技术与镜像安全管理:核心链路应该先拆哪一步

容器 容器化技术与镜像安全管理:核心链路应该先拆哪一步

容器 容器化技术与镜像安全管理:核心链路应该先拆哪一步分类:[工程技术]细分主题:Docker 容器化技术与镜像安全管理:核心链路的逐步实现与关键代码取舍面对一个积累了五六年历史包袱的单体架构应用(包含 Web 接口、后台…

2026/9/24 12:49:17 阅读更多 →