4.12 TCP 连接,一端断电和进程崩溃有什么区别?

news2024/9/28 13:21:21

目录

TCP keepalive TCP 的保活机制

主机崩溃

进程崩溃

有数据传输的场景

客户端主机宕机,又迅速重启

客户端主机宕机,一直没有重启

TCP连接服务器宕机和进程退出情况总结


TCP keepalive TCP 的保活机制

TCP 保活机制需要通过 socket 接口设置 SO_KEEPALIVE 选项才能够生效

        定义一个时间段,如果在这个时间段内(保活时间7200s,俩小时),没有任何连接相关的活动,启动TCP保活机制开始每隔一个时间段(75秒)发送一个探测报文,如果连续几个(9次)探测报文都没有得到响应,则认为TCP连接已经死亡。

主机崩溃

没开TCP keepalive的情况下,客户端宕机,服务端无法感知到客户端状态服务端的 TCP 连接将会一直处于 ESTABLISHED 连接状态,直到客户端重启。

在没有使用 TCP 保活机制且双方不传输数据的情况下,一方的 TCP 连接处在 ESTABLISHED 状态,并不代表另一方的连接还一定正常。

进程崩溃

TCP 的连接信息是由内核维护的,服务器进程崩溃内核需要回收该进程所有的TCP连接资源,内核发送第一次挥手FIN报文,后续的挥手过程也都是在内核完成,并不需要进程的参与。

所以服务端的进程退出了还是可以成功的和客户端完成TCP四次挥手的过程。

有数据传输的场景

客户端主机宕机,又迅速重启

只要有一方重启完成后,收到之前 TCP 连接的报文,都会回复 RST 报文,以断开连接

客户端主机宕机,一直没有重启

服务端超时重传报文的次数达到一定阈值后,内核就会判定出该 TCP 有问题,然后通过 Socket 接口告诉应用程序该 TCP 连接出问题了,于是服务端的 TCP 连接就会断开。

TCP连接服务器宕机和进程退出情况总结

拔掉网线后, 原本的 TCP 连接还存在吗?

拔掉网线这个动作并不会影响 TCP 连接的状态,要看拔掉网线后双方做了什么动作:

拔掉网线后,有数据传输

服务端向客户端发送的数据报文会得不到任何的响应,服务端触发超时重传机制,重传未得到响应的数据报文。

如果在服务端超时重传的过程中,把网线插回去了,客户端就会返回ACK响应报文。

如果没插回去,重传个一定次数默认15次,就断开连接了。

拔掉网线后没有数据传输

如果没有开启 TCP keepalive 机制,在客户端拔掉网线后,并且双方都没有进行数据传输,那么客户端和服务端的 TCP 连接将会一直保持存在。

而如果开启了 TCP keepalive 机制,在客户端拔掉网线后,即使双方都没有进行数据传输,在持续一段时间后,TCP 就会发送探测报文:

        如果对端正常工作。TCP保活探测报文发送给对端,这样TCP保活时间会被重置等待下一个TCP保活时间到来。

        如果对端主机宕机,探测报文不可达,TCP会报告该TCP死亡

拔网线总结:

 

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

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

相关文章

算法学习——递归

引言 从这个专栏开始,我们将会一起来学习算法知识。首先我们要一起来学习的算法便是递归。为什么呢?因为这个算法是我很难理解的算法。我希望通过写这些算法博客;来加深自己对于递归算法的理解和运用。当然,学习算法最快的方式便是…

一文解析block io生命历程

作为存储业务的一个重要组成部分,block IO是非易失存储的唯一路径,它的生命历程每个阶段都直接关乎我们手机的性能、功耗、甚至寿命。本文试图通过block IO的产生、调度、下发、返回的4个阶段,阐述一个block IO的生命历程。 一、什么是块设备…

Python“牵手”lazada商品列表数据,关键词搜索lazadaAPI接口数据,lazadaAPI接口申请指南

lazada平台API接口是为开发电商类应用程序而设计的一套完整的、跨浏览器、跨平台的接口规范,lazadaAPI接口是指通过编程的方式,让开发者能够通过HTTP协议直接访问lazada平台的数据,包括商品信息、店铺信息、物流信息等,从而实现la…

安装启动yolo5教程

目录 一、下载yolo5项目 二、安装miniconda(建议不要安装在C盘) 三、安装CUDA 四、安装pytorch 五、修改配置参数 六、修改电脑参数 七、启动项目 博主硬件: Windows 10 家庭中文版 一、下载yolo5项目 GitHub - ultralytics/yolov5:…

C++笔记之智能指针和单例、依赖注入结合使用

C笔记之智能指针和单例、依赖注入结合使用 code review! 文章目录 C笔记之智能指针和单例、依赖注入结合使用例1.一个类不使用单例,另一个类使用单例例2.两个类都使用单例,并且通过getInstance()传入类的实例例3.std::make_unique不能访问私有的构造函…

python将png格式的图片转换为jpg格式的图片

png图片是4通道 RGBA图像,具有4个通道(红色、绿色、蓝色和透明度),用于表示彩色图像以及透明度信息。 只是简单的修改后缀,并不能将png格式图片改为jpg格式。 将png格式的图片转换为jpg格式的图片 确保安装了pillow库…

自启动遇到某个节点或者某种环境变量问题导致启动失败

前言:此次记录无人车自启动过程遇到的问题。为了让ROS无人车能够实现飞控进行室外自主航线的问题,将飞控发布的PWM转为ROS无人车对应的速度。为了确保无人车启动后能够使用遥控器控制无人车,所以需要开机自启动。 硬件: 1、star…

C语言刷题训练DAY.13

1.有序序列判断 解题思路&#xff1a; 这里我们先看代码&#xff0c;我们定义了一个flag1和flag2&#xff0c;它的作用主要就是判断是不是升序&#xff0c;具体怎么使用的&#xff0c;我为大家画图展示。 解题代码&#xff1a; #include<stdio.h> int main() {int n 0;…

springboot源码编译问题

问题一 Could not find artifact org.springframework.boot:spring-boot-starter-parent:pom:2.2.5.RELEASE in nexus-aliyun (http://maven.aliyun.com/nexus/content/groups/public/) 意思是无法在阿里云的镜像仓库中找到资源 解决&#xff1a;将配置的镜像删除即可&#…

《代码随想录》专题:回溯算法1

1、组合问题 题目链接&#xff1a;77. 组合 题解 把组合问题抽象为如下树形结构 图中每次搜索到了叶子节点&#xff0c;我们就找到了一个结果。相当于只需要把达到叶子节点的结果收集起来&#xff0c;就可以求得 n个数中k个数的组合集合。最难理解的是单层搜索的过程 回溯法的…

NIST SP 800-22测试包

NIST测试包,包含15种不同的测试,对序列的随机性进行测试。其中,部分测试包含子测试。 随便选一个序列,看看测试结果: ------------------------------------------------------------------------------ RESULTS FOR THE UNIFORMITY OF P-VALUES AND THE PROPORTION OF P…

Linux学习之Ubuntu 20.04在github下载源码安装Openresty 1.19.3.1

参考的博文&#xff1a;《在 Ubuntu 上使用源码安装 OpenResty》 《OpenResty 安装安装详解-Ubuntu》 《Linux学习之CentOS 7源码安装openresty》 https://openresty.org/en/download.html是官网下载网址&#xff0c;页面往下拉有下载的链接。 https://github.com/openresty…

表达式(Expression)

可以将lambda表达式分配给Func或Action类型委托&#xff0c;以处理内存中的集合。.NET编译器在编译时将分配给Func或Action类型委托的lambda表达式转换为可执行代码。 LINQ引入了一种名为Expression的新类型&#xff0c;该类型代表强类型的lambda表达式。这意味着lambda表达式也…

Vue2向Vue3过度核心技术工程化开发和脚手架

目录 1 工程化开发和脚手架1.1 开发Vue的两种方式1.2.脚手架Vue CLI 2 项目目录介绍和运行流程2.1 项目目录介绍2.2 运行流程 3 组件化开发4 根组件 App.vue4.1 根组件介绍4.2 组件是由三部分构成4.3 总结 5 普通组件的注册使用-局部注册5.1 特点&#xff1a;5.2 步骤&#xff…

redis持久化机制 事务详解

目录 前言&#xff1a; 持久化机制 RDB&#xff08;Redis DataBase&#xff09; 手动触发 save bgsave 自动触发 RDB特点 AOF&#xff08;append only file&#xff09; 缓冲区刷新策略 重写机制 aof重写流程 混合持久化 事务 事务操作命令 WATCH WATCH实现原…

【前端从0开始】HTML5+CSS3基础语法

html5发展 HTML5是HTML最新的修订版本&#xff0c;2014年10月由万维网联盟&#xff08;W3C&#xff09;完成标准制定。 HTML5 仍处于完善之中。然而&#xff0c;大部分现代浏览器已经具备了某些 HTML5 支持 h5添加css hack&#xff0c;css zoom知识点 特性 新的特殊内容元素…

【洛谷】P2440 木材加工

原题链接&#xff1a;https://www.luogu.com.cn/problem/P2440 1. 题目描述 2. 思路分析 整体思路&#xff1a;二分答案 设置一个变量longest来记录最长木头的长度&#xff0c;sum记录切成的小段数量之和。 令左边界l0&#xff0c;右边界llongest。 写一个bool类型的check…

函数指针.

首先看一段代码&#xff1a; #include <stdio.h> void test() {printf("hehe\n"); } int main() {printf("%p\n", test);printf("%p\n", &test);return 0; } 输出结果&#xff1a; 输出的是两个地址&#xff0c;这两个地址是 test 函…

VMware 中Centos8的NAT网络设置

1、先将虚拟机设置为NAT模式 2、打开虚拟网络编辑器&#xff0c;记录以下信息 NAT设置&#xff1a;子网掩码、网关 DHCP设置&#xff1a;I P 范围 (自动时) 3、进入Centos8的网络设置页面&#xff0c;按照记录的信息进行配置 4、重载、重启网卡 nmcli c reload ensl60 n…

【位运算】算法实战

文章目录 一、算法原理常见的位运算总结 二、算法实战1. leetcode面试题01.01. 判断字符是否唯一2. leetcode268 丢失的数字3. leetcode371 两整数之和4. leetcode004 只出现一次的数字II5. leetcode面试题17.19. 消失的两个数字 三、总结 一、算法原理 计算机中的数据都以二进…