首页/新闻资讯/正文详情

TCP协议栈管理、文件符表映射机制与TCP资源关闭流程介绍

发布时间:2026/9/24 17:52:44 来源:云帆数科 栏目:资讯中心
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:44

视频素材格式转换:多款视频转换工具能力客观记录
视频素材格式转换:多款视频转换工具能力客观记录

自媒体素材整理、课件转码、监控视频归档时,经常遇到视频格式不兼容、平台上传受限的问题。批量转格式、压缩体积、提取音频、转 GIF,不同工具支持的格式种类、批量上限、编码自定义范围差别较大。下文客观记录多款视频转换工具基础能力与使用边界&#… · 2026/9/24 17:52:38

教学反思怎么写才不只是感想:四步各留一处能回查的痕迹
教学反思怎么写才不只是感想:四步各留一处能回查的痕迹

一节课上完,随笔写下几行,往往只是当堂的感受;真正立得住的反思,是每一步都留下了一处日后能翻回来核对的凭据。知学术AIPaperGPT 把这条线看得比字数更重。先要一个框架,让免费智能大纲接手;图表这类素材&… · 2026/9/24 17:52:38

YOLO+深度估计实现单目3D目标检测:完整可跑工程解析
YOLO+深度估计实现单目3D目标检测:完整可跑工程解析

简介:面向计算机视觉与自动驾驶领域的3D目标检测实战资源,基于YOLO实时检测框架与深度估计算法,给出从二维检测扩展到三维空间定位的完整工程实现,适用于希望快速上手YOLO三维改写的工程师、研究人员及高校学生。资源压缩包共7个文… · 2026/9/24 18:26:41

Media Encoder ME2026安装教程 视频转码环境配置图文教程
Media Encoder ME2026安装教程 视频转码环境配置图文教程

前言 Media Encoder ME2026 是 Adobe 旗下的一款专业视频渲染与媒体处理工具,支持各类音视频格式的转码输出。不管你是在做视频剪辑、后期包装还是批量媒体处理,ME2026 都能帮你把渲染效率提上来。这篇 Media Encoder ME2026安装教程 会把从下载到安装的… · 2026/9/24 18:26:35

Docker部署Redis 7实战:从单机到主从哨兵架构
Docker部署Redis 7实战:从单机到主从哨兵架构

很多朋友第一次接触 Docker 部署 Redis,都是先搜到一条 docker run redis 命令,敲完发现确实能跑,但一重启数据没了、配置文件改不了、容器日志刷到飞起也不知道怎么管,最后只能把容器删了重建。这篇文章我就用 Redis 7 作为例子… · 2026/9/24 18:26:28

Flutter数字输入框OpenHarmony适配实战:从设计到调试的完整笔记
Flutter数字输入框OpenHarmony适配实战:从设计到调试的完整笔记

做Flutter跨平台开发的同学,这两年应该都感受到了一股明确的风向:OpenHarmony适配已经从“要不要做”变成了“怎么做”。我接到的需求里,很多看起来人畜无害的“小组件”,一旦换到OpenHarmony环境里就会露出各种隐藏问题。今天想借… · 2026/9/24 18:26:28

Flutter数字输入框在OpenHarmony上的适配与优化实战
Flutter数字输入框在OpenHarmony上的适配与优化实战

做Flutter开发这几年,我越来越习惯“一套代码到处跑”的感觉,但真正把Flutter应用搬到OpenHarmony设备上之后,才发现这种省心是相对的。最近在做一个跨平台管理类App,涉及报价、结算、数量录入等场景,数字输入框几乎每… · 2026/9/24 18:26:28

n8n 工作流自动化平台深度拆解:架构、部署与 AI 集成实战
n8n 工作流自动化平台深度拆解:架构、部署与 AI 集成实战

1. 为什么 n8n 值得单独拿出来拆一遍第一次认真看 n8n 是在一个跨境电商的小项目里。当时的需求很朴素:把几个平台的订单数据定时抓下来,清洗一遍,推送到内部系统,再触发企业微信通知。听起来是个脚本就能搞定的事,但真… · 2026/9/24 18:26:22

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

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

1D-CNN时间序列建模实战:从Conv1d原理到工业落地
1D-CNN时间序列建模实战:从Conv1d原理到工业落地

简介:面向时间序列数据建模的一维卷积神经网络完整实现,适合深度学习入门者及需要快速验证时序模型的研究者,能够从音频、文本、传感器或股价等序列中挖掘局部特征与时间依赖。压缩包体积很小,只有3KB,内含3个Python脚… · 2026/9/24 0:00:26

柔软的L:汉语语流中被忽视的舌肌张力控制
柔软的L:汉语语流中被忽视的舌肌张力控制

1. 这个“L”不是字母表里的L,而是舌尖上的L最近在几个方言群和语音教学社群里,反复看到有人发一句:“也说字母L:柔软的长舌”。初看以为是英语发音课笔记,点开才发现全是方言爱好者、播音系学生、语言康复师甚至戏曲演… · 2026/9/24 0:00:44

了解更多?预约专属演示

我们的顾问将为您一对一讲解产品与方案

企业微信二维码