协议-TCP协议-基础概念03-Keep live保活机制-TCP RST-TCP连接

news2024/12/24 20:46:08

Keep live保活机制-TCP RST-TCP连接

参考来源:
《极客专栏-网络排查案例课》

Keep live保活机制

定时发送心跳探测包;
对于心跳回复包有超时限制;
要打开这个 TCP Keep-alive 特性,你需要使用 setsockopt() 系统调用,对已经创建的Socket 进行配置,启用 Keep-alive。具体的调用方法,你可以参考 man setsockopt。

在 Linux 操作系统层级,也有三个跟 Keep-alive 有关的全局配置项。

间隔时间:net.ipv4.tcp_keepalive_time,其值默认为 7200(秒),也就是 2 个小时。

最大探测次数:net.ipv4.tcp_keepalive_probes,在探测无响应的情况下,可以发送的最多连续探测次数,其默认值为 9(次)。

最长间隔:net.ipv4.tcp_keepalive_intvl,在探测无响应的情况下,连续探测之间的最长间隔,其值默认为 75(秒)。

补充:你可以在 Linux 系统里面,执行 man tcp,查看内核对 TCP 协议栈的详细文档。这里我摘录一下关于 Keep-alive 的部分:

如果我们连接后启用了Keep-alive,但没有设定自定义的数值,那么就会便用上面这些默认值,即:当连接闲置(没有数据交互)送到7200秒(2小时)时发送心跳包,每次心跳包超时时间为75秒,最多重试9次。

这样的话,对于一个已经失效的 TCP 连接,最大需要 7200+75*9=7875 秒(约等于 2 小时 11 分钟)才能探测到。

毫无疑问,这个时间是相当长的。不过结合时代背景,这个其实也可以理解:TCP Keep-alive 被设计的时候是八十年代,当时因特网还很初级,所以设计者们并不想让心跳包占据太多的网络资源。从而,就有了这么一个感知时间很长的心跳机制。关于 TCP Keep-alive的一些更多信息在RFC1122里,你有兴趣的话可以去研究一下。

长连接失效、被重置、异常关闭等问题的排查思路:
我们需要先从应用层查找原因,然后是操作系统层面,最后是网络层分析。排查的顺序就是这样的:
应用层代码 -> 操作系统的时间配置 -> 网络的抓包分析

TCP RST的三类原因

大体上,TCP RST 的原因可以分为这么几个大类:
找不到相关连接,那么接收端可以放心地直接发送 RST。
找到了相关连接,但收到的报文不符合 TCP 规范,那么接收端也可以发送 RST。
找到了相关连接,但传输状况恶劣,内核选择及时“止损”,发送 RST。
在这里插入图片描述

TCP连接

误区-一台机器最多 65535 个 TCP 连接

连接是四元组,并不是单纯的源端口或者目的端口。那么多个数相乘,这个乘积当然可以远远超过 65535 了。先不谈论海量级网站的场景,就算我们维护一台 Web 服务器,假如当前有 10 万台客户端连着你,平均每个客户端跟你有 6 个连接(这很常见),那么就是 60 万个连接了,是不是也早就超过 6 万了?

当然,在限定场景下,一个客户端(假设只有一个出口 IP)和一个服务端(假设也只有一个 IP 和一个服务端口),那么确实只能最多发起 6 万多个连接。但你自己也已经明白,这跟前面的误解,已经是两回事了。

通信双方还真的可以同时向对方发送 SYN,也能建立起连接

在这里插入图片描述

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

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

相关文章

Ps:缩放工具

缩放工具 Zoom Tool 常用于对图像进行视图上的放大和缩小。在查看图像细节、处理图像时极为常用。 快捷键:Z ◆ ◆ ◆ 常用操作方法与技巧 1、快捷键 Z 是一个弹簧键。即,在其它工具的状态下,按住 Z 键不放就会临时切换到缩放工具&#xff…

什么是异步编程?

聚沙成塔每天进步一点点 ⭐ 专栏简介⭐ 处理异步操作的方法⭐ 写在最后 ⭐ 专栏简介 前端入门之旅:探索Web开发的奇妙世界 欢迎来到前端入门之旅!感兴趣的可以订阅本专栏哦!这个专栏是为那些对Web开发感兴趣、刚刚踏入前端领域的朋友们量身打…

PHP8的继承和多态-PHP8知识详解

我们在前面的时候讲过《面向对象编程的特点》时,面向对象编程具有3大特点:封装性、继承性和多态性。 继承和多态的根本作用就是完成代码的重用。下面就来讲解php8的继承和多态。 1继承 子类可以继承父类的所有成员变量和成员方法,包括构造方…

Spring Boot与Spring Security的跨域解决方案

目录 一、什么是跨域问题 二、Spring Boot和Spring Security介绍 三、如何解决Spring Boot与Spring Security的跨域问题 一、什么是跨域问题 跨域问题(Cross-Origin Resource Sharing,简称CORS)是指在Web开发中,浏览器出于安全…

美轮美奂,尽在眼前——Aerial for Mac 高清鸟瞰屏保程序

想要让您的 Mac 屏幕焕发别样风采?那么,Aerial for Mac 高清鸟瞰屏保程序一定不容错过。这款应用程序将为您带来最优质的高清鸟瞰视频壁纸,让您的屏幕焕发无限活力和美感。 Aerial for Mac 高清鸟瞰屏保程序是一款专为 Mac 设计的屏幕保护程…

Unity之Hololens开发如何实现UI交互

一.前言 什么是Hololens? Hololens是由微软开发的一款混合现实头戴式设备,它将虚拟内容与现实世界相结合,为用户提供了沉浸式的AR体验。Hololens通过内置的传感器和摄像头,能够感知用户的环境,并在用户的视野中显示虚拟对象。这使得用户可以与虚拟内容进行互动,将数字信…

Vue组件库Element

目录 Vue组件库ElementElement简介Element快速入门环境配置Element常用组件Table表格Table表格演示Table表格属性详解 Pagination分页Pagination分页演示Pagination分页属性详解Pagination分页事件详解 Dialog对话框Dialog对话框组件演示Dialog对话框属性详解 Form表单Form表单…

两横一纵 | 寅家科技发布10年新征程战略

2023年9月22日,寅家科技“寅路向前”10年新征程战略发布会在上海举办,来自投资领域的东方富海、深创投、高新投等知名投资机构,一汽大众、一汽红旗、奇瑞汽车等主机厂,国家新能源汽车技术创新中心、梅克朗、芯驰科技、思特威等合作…

【湖科大教书匠】计算机网络随堂笔记第6章(计算机网络应用层)

目录 6.1、应用层概述 常见的应用 ​编辑 总结 ​编辑 6.2、客户/服务器方式(C/S方式)和对等方式(P2P方式) 概念 客户/服务器方式(C/S方式) 对等方式(P2P方式) 总结 6.3、动态主机配…

Spring 学习(六)代理模式

10. 代理模式 案例 10.1 静态代理 角色分析 抽象角色:一般使用接口或者抽象类实现。真实角色:被代理的角色。代理角色:代理真实角色,含附属操作。客户:访问代理对象的角色。 租房案例 定义租赁接口 /*** TODO* 租房*…

uniapp实现点击按钮分享给好友

<button class"share" open-type"share">分享</button>import {onLoad,onShareAppMessage,onShareTimeline} from dcloudio/uni-app onLoad(() > {//设置Menus菜单&#xff0c;使 发送给朋友/分享到朋友圈 两个按钮可以使用wx.showShareMen…

熟悉MySQL OCP和Oracle OCP和考试真实界面

解答OCP学员常问姚远老师的问题如下: 考试需要提前多久到达&#xff1f;&#xff08;提前15到30分钟到达&#xff09;考试需要带什么证件&#xff1f;&#xff08;考试必须携带2个证件&#xff1a;身份证另外一种证件。另外一种证件可以是&#xff1a;信用卡、护照、驾驶证、港…

【QT】QT事件Event大全

很高兴在雪易的CSDN遇见你 &#xff0c;给你糖糖 欢迎大家加入雪易社区-CSDN社区云 前言 本文分享QT中的事件Event技术&#xff0c;主要从QT事件流程和常用QT事件方法等方面展开&#xff0c;希望对各位小伙伴有所帮助&#xff01; 感谢各位小伙伴的点赞关注&#xff0c;小易…

解决cocoapods下载hermes太慢的问题

最近,在执行pod install命令安装iOS依赖包的时,运行到installing hermes engine 就直接卡住了。执行pod install --verbose 时,看到下载包的大小478M,但是下载速度高达 20kb/s。 对于这个问题,查阅了网上的一些资料,以下是一个可行的解决方案。 步骤1 打开node_modules…

11.2.0.4Oracle rac grid卸载安装注意事项

还有三天放国庆和中秋了&#xff0c;今天周一上班就跟丢了魂一样&#xff0c;本来两台11g RAC一个半小时搞定的事情&#xff0c;我从早上九点一直干到现在晚上八点半才干完&#xff0c;简直是昏了头了。安装的时候将大页设置错误&#xff0c;导致一套库直接系统崩了&#xff0c…

SpringBoot整合QQ邮箱发送验证码

1.项目介绍 基于SpringBoot QQ邮箱服务 Hutools实现的获取验证码功能&#xff0c;接下来从如何申请授权码&#xff0c;如何配置项目&#xff0c;如何启动项目&#xff0c;如何测试项目进行讲解&#xff0c;下面的图片是一个测试案例&#xff0c;使用postman进行测试&#xf…

[Qt]QListView 重绘实例之一:背景重绘

0 环境 Windows 11Qt 5.15.2 MinGW x64 1 系列文章 简介&#xff1a;本系列文章&#xff0c;是以纯代码方式实现 Qt 控件的重构&#xff0c;尽量不使用 Qss 方式。 《[Qt]QListView 重绘实例之一&#xff1a;背景重绘》 《[Qt]QListView 重绘实例之二&#xff1a;列表项覆…

多进程的实现原理-多道技术

前言&#xff1a; 嗨喽~大家好呀&#xff0c;这里是魔王呐 ❤ ~! python更多源码/资料/解答/教程等 点击此处跳转文末名片免费获取 操作系统 ​ 位于应用软件和硬件设备之间,本质是一个软件 核心作用: 为用户屏蔽了复杂繁琐的硬件接口;为应用程序提供了清晰易用的系统接口 …

Java --- MySQL8之索引优化与查询优化

目录 一、索引失效场景 1.1、全值匹配 1.2、最佳左前缀规则 1.3、主键插入顺序 1.4、计算、函数、类型转换(自动或手动)导致索引失效 1.5、类型转换导致索引失效 1.6、范围条件右边的列索引失效 1.7、不等于(! 或者<>)索引失效 1.8、is null可以使用索引&…

redis(2)-hiredis-centos-ubuntu 下安装和使用

ubuntu 下安装vsftpd sudo apt update sudo apt install vsfptd sudo systemctl status vsftpdvim /etc/vsftpd.conflocal_enablesYESwrite_enableYESanonymous_enableYESanon_mkdir_write_enableYES //允许匿名用户在FTP上创建目录anon_upload_enableYES //允许匿…