TCP连接过程中涉及到的状态转换

TCP连接过程中涉及到的状态转换

TCP 服务器和客户端都要有一定的数据结构来保存这个连接的信息。
在这个数据结构中其中就有一个属性叫做 “状态”
操作系统内核根据状态的不同,决定了当前应该干什么。(不会迷茫也不会混乱)

在这里插入图片描述

LISTEN

LISTEN状态,表示服务器这边,创建好 serverSocket 了,并且绑定端口号完成。

ESTABLISHED

ESTABLISHED已确立的。客户端和服务器连接已经建立完毕 (三次握手握完了)

在这里插入图片描述

谁被断开连接,谁进入 CLOSE_WAIT

CLOSE_WAIT

CLOSE_WAIT就表示,接下来代码中需要调用 close 来主动发起 fin,收到对方的 fin 之后进入这个状态的。

谁主动断开连接,谁进入 TIME_WAIT

TIME_WAIT

TIME_WAIT就是表示本端给对方发起 FIN 之后,对端也给我发 FIN,此时本端进入 TIME_WAIT,给最后一个 ACK 的重传留有一定的时间。

TIME_WAIT 存在的意义,主要是防止最后一个 ACK 丢包

在四次挥手的过程中,会涉及到确认应答和超时重传。
如果没有收到 ACK 就视为丢包。
服务器如果没有收到最后一个 ACK,就会重传 FIN。

客户端如果在这个环节把 TCP 连接释放掉,此时意味着重传的 FIN 就无法被返回 ACK 了。
(保存对端信息的数据结构存在,才能给这个连接提供各种操作,才能返回 ACK)

此处的 TIME_WAIT 等待也不是无休止的等待,最多等 2 MSL (MSL 是一个系统内核的配置项,表示客户端到服务器之间,消耗的最长时间。这个时间一般都是拍脑门出来的一个非常大的时间,比如常见的设置值是 1min)

客户端等一个很长很长的时间,这么长时间你都不复传,意思是就再不会复传了~~

在这里插入图片描述

用netstat -ano | findstr 9090 可以看到TCP状态

(前提是你写的端口为9090 的程序启动)

在这里插入图片描述

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/bicheng/63194.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

COCO数据集理解

COCO(Common Objects in Context)数据集是一个用于计算机视觉研究的广泛使用的数据集,特别是在物体检测、分割和图像标注等任务中。COCO数据集由微软研究院开发,其主要特点包括: 丰富的标签:COCO数据集包含…

github仓库自动同步到gitee

Github Actions是Github推出的自动化CI/CD的功能,我们将使用Github Actions让Github仓库同步到Gitee 同步的原理是利用 SSH 公私钥配对的方式拉取 Github 仓库的代码并推送到 Gitee 仓库中,所以我们需要以下几个步骤 生成 SSH 公私钥添加公钥添加私钥配…

【六足机器人】03步态算法

温馨提示:此部分内容需要较强的数学能力,包括但不限于矩阵运算、坐标变换、数学几何。 一、数学知识 1.1 正逆运动学(几何法) 逆运动学解算函数 // 逆运动学-->计算出三个角度 void inverse_caculate(double x, double y, …

Netty面试内容整理-编码实战相关问题

在 Netty 面试中,编码实战相关的问题会考察你的动手能力,具体包括 Netty 框架的使用、如何设计网络协议、如何处理一些常见的实际开发问题等。以下是一些常见的编码实战相关面试问题及要点: 如何实现一个简单的 Netty Echo 服务器? 一个 Echo 服务器是 Netty 编码的经典示例…

文化央企再一次声明

央企再次声明 中传国华(北京)科技有限公司,成立于2023年5月29日,原法定代表人曹忠喜,统一社会信用代码:91110117MACL4B9A91,我司中传世纪控股(北京)有限公司系该司的原股…

Ubuntu实时流量检测

nethogs启动 安装nethogs sudo apt install nethogs流量检测 sudo nethogs效果如下: 可以看到收发流量的进程PID,进程目录,发送设备,以及收发速率;但这里有个unkown TCP进程是什么呢? 可以用ps -e 列出操作前后的…

大数据新视界 -- 大数据大厂之 Hive 临时表与视图:灵活数据处理的技巧(上)(29 / 30)

💖💖💖亲爱的朋友们,热烈欢迎你们来到 青云交的博客!能与你们在此邂逅,我满心欢喜,深感无比荣幸。在这个瞬息万变的时代,我们每个人都在苦苦追寻一处能让心灵安然栖息的港湾。而 我的…

【C语言】二维数组前缀和

相信你是最棒哒!!! 文章目录 问题描述 题目代码: 总结 问题描述 输入一个 𝑛n 行 𝑚m 列的整数矩阵,再输入 𝑞q 个询问,每个询问包含四个整数 𝑥1,&#x…

使用脚本语言实现Lumerical官方案例——闪耀光栅(Blazed grating)(纯代码)(2)

接《使用脚本语言实现Lumerical官方案例——闪耀光栅(Blazed grating)(纯代码)(1)》 一、添加分析组 1.1 代码实现 #添加分析组 addanalysisgroup(); set("name", "grating_R"); set("x", 0); set("y", 2.5*um); addanalysisgrou…

车载测试技术栈

软件测试理论知识 了解软件测试的基本概念、流程和方法,包括测试需求分析、测试用例设计、测试执行、缺陷发现和修复等。 汽车行业知识 熟悉汽车行业的特点和规范,了解汽车的构造和工作原理,包括发动机、底盘、电气系统等。 通信协议知识 …

61 基于单片机的小车雷达避障及阈值可调

所有仿真详情导航: PROTEUS专栏说明-CSDN博客 目录 一、主要功能 二、硬件资源 三、主程序编程 四、资源下载 一、主要功能 基于51单片机,采用超声波传感器检测距离,通过LCD1602显示屏显示,三个按键,第一个按键是…

Linux基本命令---文件权限与用户管理

在Linux系统中,文件权限与用户管理是两个核心概念,它们共同维护着系统的安全性和稳定性。以下是如何在Linux系统中体验文件权限与用户管理的详细步骤: 一、用户管理 创建新用户 使用adduser命令可以创建新用户。例如,创建一个名为…

Ubuntu——extrepo添加部分外部软件源

extrepo 是一个用于 Ubuntu 和其他基于 Debian 的系统的工具,它的主要作用是简化和管理外部软件源(repositories)的添加和更新。通过使用 extrepo,用户可以方便地添加、删除和管理第三方软件源,而不需要手动编辑源列表…

Java集合排序技术详解

在Java编程中,对集合进行排序是一项常见的任务。Java提供了多种方式来对集合进行排序,包括使用Collections.sort()、Arrays.sort()、List接口的sort()方法以及Java 8引入的Stream API。本文将详细介绍这些排序技术,并探讨它们的使用场景和性能…

WEB开发: Node.js路由之由浅入深(一) - 全栈工程师入门

作为一个使用Node.js多年的开发者,我已经习惯于用Node.js写一些web应用来为工作服务,因为实现快速、部署简单、自定义强。今天我们一起来学习一个全栈工程师必备技能:web路由。(观看此文的前提是默认你已经装好nonde.js了&#xf…

【机器学习算法】——逻辑回归

目录 逻辑回归理解损失函数代码练习1. 房屋价格与面积的关系2.基于学生特征的录取概率预测 逻辑回归理解 逻辑回归是用来二分类的! 是在线性回归模型之后加了一个激活函数(Sigmoid)将预测值归一化到【0~1】之间,变成概率值。 一般计算其中一…

一个有意思pytorch的简单应用小实验

通过一个简单的脚本,来学习pytorch的基本应用,比如:前向传播、反向传播、学习率以及预测、模型的基本原理和套路。 得到结果。。。保存模型。。。输入参数。。。预测。。。像不像?。。。像多少?。。。 设计目标&#x…

使用lumerical脚本语言创建定向耦合器并进行数据分析(纯代码实现)

本文使用lumerical脚本语言创建定向耦合器波导、计算定向耦合器的偶数和奇数模式、分析定向耦合器的波长依赖性、分析定向耦合器的间隙依赖性(代码均有注释详解)。 一、绘制定向耦合器波导 1.1 代码实现 # 这段代码主要实现了绘制定向耦合器波导几何结构的功能。通过定义各种…

Linux 35.6 + JetPack v5.1.4之RTP实时视频Python框架

Linux 35.6 JetPack v5.1.4之RTP实时视频Python框架 1. 源由2. 思路3. 方法论3.1 扩展思考 - 慎谋而后定3.2 扩展思考 - 拒绝拖延或犹豫3.3 扩展思考 - 哲学思考3.4 逻辑实操 - 方法论 4 准备5. 分析5.1 gst-launch-1.05.1.1 xvimagesink5.1.2 nv3dsink5.1.3 nv3dsink sync05…

企业风险投资、融资事件数据(1921-2024)

数据包括历年上市与非上市企业的风险投资融资数据等数据,包括融资时间、被投企业、投资方、退出方等数据,希望对大家的研究有所帮助 一、数据介绍 数据名称:企业风险投资、融资事件 数据范围:上市与非上市企业 数据年份&#x…