TCP/IP(八)TCP的连接管理(五)四次握手

news2024/11/20 23:16:14

一  tcp连接断开

每一个TCP报文的'超时重传'都由一个'特定的内核参数'来控制

①  四次握手的过程

遗留: 谁先发送'FIN'包,一定是'client'吗?  --> 'upload'和'download'

补充: '主动'和'被动'断开连接的场景

+++++++++++ "四次握手过程描述" +++++++++++

F  --> 'FIN'  --> 'Finish'

关注: 发送'报文'后,发送方所处的'TCP'状态

四次挥手对应'4'个报文

+++++++++++++++ "正常四次挥手TCP状态变迁" +++++++++++++++

client: ESTABLISHED --> FIN-WAIT-1 --> FIN-WAIT-2 --> TIME-WAIT  --> CLOSE

server: ESTABLISHED --> CLOSE-WAIT --> LAST-ACK   --> CLOSE

补充: 处于不同'TCP'状态的时间取决于丢包下'重试'的次数

②  为什么挥手需要四次

TCP三次握手

特殊'三次'挥手: 把 '第二次' 的 ack报文方在 '第三次'fin报文一起发送

二   四次挥手报文丢失探究

明确: 通信哪一方'关闭'连接

①   第次挥手丢失

关键: 客户端迟迟'收不到'被动方的 ACK 的话,也就会'触发'超时重传机制,重传 'FIN' 报文

内核参数: tcp_orphan_retries

参数含义: 如果一直都'收不到针对FIN的ACK',那么在彻底销毁这个FIN_WAIT1的连接前,等待几轮RTO

/proc/sys/net/ipv4/tcp_orphan_retries   --> 'Centos7.7' 默认是 0

案例: 假设 'tcp_orphan_retries = 3',当第'一'次挥手'一直丢失'时,发生的'过程图'

思考: 这种'算'异常断开连接吗? --> 这种和'正常的四次挥手'断开连接的区别?
​
强调: TCP'每一次超时',都会对下一次超时时间进行'指数退避'

原理图的具体'过程'描述

②  第次挥手丢失了,会发生什么?

备注: 第二次'握手'是server端发起的'ACK'确认包

强调: 第'一、二'次握手'客户端感知'的都是'没有'收到服务端的'ACK'包

 1、第'一'次是客户端发起的'FIN'包丢失,导致服务端'没有'收到FIN包,服务端更不可能发送'ACK'包

 2、第'二'次是客户端发起的'FIN'包到服务端,服务端回的'ACK'包丢失,导致客户端'没有'收到ACK包

案例: 假设 'tcp_orphan_retries 参数值为 2',当第'二'次'一直丢失'时,发生的'过程图'

ACK 报文 '不会重传',所以重传 'FIN' 报文

client: ESTABLISHED --> FIN-WAIT-1  --> CLOSE

原理图的具体'过程'描述

 

③  第二次握手和第三次握手间隔

/proc/sys/net/ipv4/tcp_fin_timeout --> 缺省值是'60秒' --> 控制'FIN_WAIT2'状态时间

重点: 'tcp_fin_timeout' 可以控制'close'关闭连接,但是'无法'控制'shutdown'关闭的连接

1、client 调用 'close函数' 图谱

调用 close 关闭的连接,如果在 60 秒后还没有收到'服务端的FIN' 报文,客户端连接就会直接关闭

2、client 调用 'shutdowne函数' 图谱

④  第次挥手丢失了,会发生什么?

案例: 假设 'tcp_orphan_retries 参数值为 3',当第'三'次'一直丢失'时,发生的'过程图'

重传: 客户端'重传'第'三'次握手的'FIN 报文'

⑤  第次挥手丢失了,会发生什么?

案例: 假设 'tcp_orphan_retries 参数值为 2',当第'四'次'一直丢失'时,发生的'过程图'

细节: 'ACK'报文丢失,不会重传'ACK'报文,而是重传上次的'FIN'报文

原理图的具体'过程'描述

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

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

相关文章

LeetCode-144-二叉树的前序遍历

题目描述: 题目链接:LeetCode-144-二叉树的前序遍历 递归法 解题思路: 方法一:递归。 要先清楚前序遍历的顺序:先根节点,再左子树,再右子树。 然后是递归三部曲: 确定递归函数的参数…

香港硬防服务器的防御有什么优缺点?

​  在选择服务器时,安全性是一个重要的考虑因素。而对于那些需要高级防御功能的用户来说,香港硬防服务器可能是一个不错的选择。它也有一些优缺点需要考虑。 香港硬防服务器优点: 强大的硬件资源:香港硬防服务器拥有足够的硬件…

Session共享问题

出现这个问题的原因,从根本上来说是因为Http协议是无状态的协议。客户端和服务端在某次会话中产生的数据不会被保留下来,所以第⼆次请求服务端无法认识到你曾经来过, Http为什么要设计为无状态协议?早期都是静态页面无所谓有无状态…

初识华为云数据库GaussDB for openGauss

01 前言 GaussDB是华为自主创新研发的分布式关系型数据库。该产品具备企业级复杂事务混合负载能力,同时支持分布式事务,同城跨AZ部署,数据0丢失,支持1000的扩展能力,PB级海量存储。同时拥有云上高可用,高可…

【大数据】HBase入门指南

原创不易,注重版权。转载请注明原作者和原文链接 文章目录 HBase特性Hadoop的限制基本概念NameSpaceTableRowKeyColumnTimeStampCell 存储结构HBase 数据访问形式架构体系HBase组件HBase读写流程读流程写流程 MemStore Flush参数说明 StoreFile Compaction参数说明触…

httprunnet自动化测试实战

引言 自动化测试是指使用软件工具、脚本或编程来执行测试任务,以代替人工执行测试用例的过程。它使用自动化工具和技术来模拟用户操作,验证和评估软件应用程序的功能、性能和稳定性。 自动化测试的主要目的是提高测试效率和质量,它具有以下几…

记一次python 正则表达式

1 正则一般用到的所有字符,具体每个字符的用法自行百度 2 案例,理解了这个案例基本上没问题了,4种格式的字符串,都能提取生日信息 import reline "xxx出生于2001年6月1日" line "xxx出生于2001/6/1" line…

C语言,低洼地问题

最简单的低洼地的特征是前边下坡后边上坡。即三个数,第一个数比第二个数大,第二个数比第三个数小。 但是也有两种特殊情况: 第一种,就是图中序号3的那个低洼地,先下坡再平坡然后又是上坡,这里也算一个低洼…

计算机毕业设计选什么题目好?springboot 大学餐厅菜品推荐和点评系统

✍✍计算机编程指导师 ⭐⭐个人介绍:自己非常喜欢研究技术问题!专业做Java、Python、微信小程序、安卓、大数据、爬虫、Golang、大屏等实战项目。 ⛽⛽实战项目:有源码或者技术上的问题欢迎在评论区一起讨论交流! ⚡⚡ Java实战 |…

element树形控件编辑节点组装节点

需求功能&#xff1a; 编辑树节点&#xff0c;组装节点 <el-scrollbar class"scrollbar-wrapper"><el-tree :data"nodeList" ref"tree" :props"defaultProps" :expand-on-click-node"false"><template slot…

golang jwt(hs,es,rs,ed)密钥生成、加签验签案例

golang JWT加签算法及使用案例 JWT原理 查看官方lib库 官方lib库 选择go语言 数据结构定义 secret.go package secretconst KEY_PATH "keys"type OutSecret struct {Secret string // 哈希签名PublicKeyFile stringPrivateKeyFile string } // 密钥生成 typ…

3D 人体研究

SynBody: Synthetic Dataset with Layered Human Models for 3D Human Perception and Modeling SynBody 是一个新的合成数据集&#xff0c;旨在推动 3D 人体研究的多样性和标注质量。它具有以下三个吸引人的特点&#xff1a; 服装参数化人体模型&#xff1a;可以生成各种不同…

智慧园区能源监控平台:构建绿色智能的未来城市

随着科技的发展的不断进步&#xff0c;在我国城镇化进程越来越快&#xff0c;园区做为产业集群的重要组成部分&#xff0c;其能源消耗和管理上的问题日益突显。为了应对这一考验&#xff0c;智慧园区能源监控平台应时而生&#xff0c;它利用大数据、云计算技术、物联网等尖端技…

云原生微服务治理 第四章 Spring Cloud Netflix 服务注册/发现组件Eureka

系列文章目录 第一章 Java线程池技术应用 第二章 CountDownLatch和Semaphone的应用 第三章 Spring Cloud 简介 第四章 Spring Cloud Netflix 之 Eureka 文章目录 系列文章目录[TOC](文章目录) 前言1、Eureka 两大组件2、Eureka 服务注册与发现3、案例3.1、创建主工程3.1.1、主…

栈的模拟实现(Java)

目录 1、 栈的概念2、栈的使用3、栈的模拟实现 1、 栈的概念 栈&#xff1a;一种特殊的线性表&#xff0c;其只允许在固定的一端进行插入和删除元素操作。进行数据插入和删除操作的一端称为栈顶&#xff0c;另一端称为栈底。栈中的数据元素遵守后进先出LIFO&#xff08;Last I…

gpu cuda矩阵转置

欢迎关注更多精彩 关注我&#xff0c;学习常用算法与数据结构&#xff0c;一题多解&#xff0c;降维打击。 问题描述 给定1个二数组&#xff0c;利用gpu转置并返回结果。 cpu 算法 void cpu_matrix_trnspose(int in[N][M], int out[M][N]) {for (int y 0; y < N; y) {fo…

云原生安全应用场景有哪些?

当今数字化时代&#xff0c;数据已经成为企业最宝贵的资产之一&#xff0c;而云计算作为企业数字化转型的关键技术&#xff0c;其安全性也日益受到重视。随着云计算技术的快速发展&#xff0c;云原生安全应用场景也越来越广泛&#xff0c;下面本文将从云原生安全应用场景出发&a…

【Flutter学习】AppBar 和 PopupMenu

App Bar 可以视为页面的标题栏&#xff0c;在 Flutter 中用AppBar组件实现&#xff1b;Popup Menu 是弹出菜单&#xff0c;用PopupMenuButton实现。下面结合这两个组件说明其用法。 1. 代码实现 一个简单的AppBar实现代码如下&#xff1a; import package:flutter/material.…

ResNet分类器量化

1. 动态范围的常用计算方法 Max方法 之前的对称量化和非对称量化就是在用最大最小的办法做的 Histgram 直方图是一种用于可视化信号或数据分布的图形工具。计算动态范围的一种方法是通过查看直方图的范围。动态范围可以由直方图中的最高峰值和最低峰值之间的差异来估算。 E…

国内乳业龙头『君乐宝』×企企通强强联手,搭建采购供应链管理系统+商城平台双管齐下推动低碳转型

乳制品含有丰富且易吸收的营养物质&#xff0c;一直以来被认为是改善国民营养健康的重要产品&#xff0c;随着乳制品加工工艺的发展&#xff0c;市场上出现越来越多种类的乳制品供消费者选择。 随着中国经济发展、城镇化水平提高&#xff0c;以及年轻一代饮奶习惯的改变等因素&…