TCP四次挥手——断开连接 滑动窗口-流量控制

news2025/11/2 9:10:15

四次挥手

在TCP的四次挥手中,其重要作用就是释放客户端和服务器的连接。

这里的一些参数非常重要,因为这些参数的作用是为了表达TCP四次挥手断开连接的过程。

其中的参数如下

1.FIN:FIN (Finish) 是TCP协议中的一个标志位,用于表示在数据传输完成后,发送方已经完成了数据的发送,并且不会再发送任何数据。当一个TCP连接的一方发送了带有 FIN 标志的数据段时,表示该方已经完成了数据的发送,但仍然可以接收来自另一方的数据。

2.ACK:ACK (Acknowledgment) 也是TCP协议中的另一个标志位,用于表示收到数据的确认。当一个TCP连接的一方发送了带有 ACK 标志的数据段时,表示该方已经成功接收到了之前发送方的数据。ACK 用来通知发送方数据已经到达目的地并得到正确处理。

3.CLOSE_WAIT:等待应用程序调用close方法,但是如果说程序出现问题,close没有及时的调用或者说根本没调用,那么就会使得机器上出现大量的CLOSE_WAIT。CLOSE_WAIT 是 TCP 状态之一,它表示在 TCP 连接的一端已经发送了关闭连接的请求(通过发送 FIN),但是另一端尚未发送关闭连接的请求或确认(通过发送 ACK。

3.TIME_WAIT:客户端在收到服务器返回的FIN后,不能立即释放TCP连接,如果立即释放了,后续一旦对端重传了FIN,此时客户端无法应对,因此客户端这边就需要一个特殊状态TIME_WAIT状态来等待可能到达的FIN重传数据。一般来说,TIME_WAIT持续一段时间,等待对方FIN的重传,等待的时间,一般是2MSL,MSL这个数值通常是1min,这意味着超过2min还没收到重传的FIN,就认为对方不会重传了。

面试题

如果发现服务器端出现大量的TIME_WAIT,如何处理?

出现大量的TIME_WAIT,说明服务器这边出发了大量的主动断开的TCP连接操作,这个操作对服务器来说,是非常不科学的,一般都是客户端主动断开连接

滑动窗口

确认应答,超时重传和连接管理保证了可靠传输

TCP除了保证可靠传输之外,也希望尽可能高效的完成数据传输,滑动窗口就是其中的一种,提高传输效率的机制。

1.正常来说,主机A这里每次收到一个ACK才发送下一个数据。

2.但是一条一条发送效率比较低,因此采用批量发送的方法,因此引入了滑动窗口,而批量发送的数据量大小就是窗口大小,在这里,比如说滑动窗口大小是4,那么批量发了四组数据之后,不是等到4个ack都回来才继续发送新的数据,而是收到一个ack,就往后发一个新的。

 滑动窗口出现丢包的情况:

情况1:数据包已经抵达了,ACK被弄丢了

这种情况下,前面的ACK被弄丢了,但是只要是最后的ACK到达,那么久没有问题,就默认前面的数据全部收到。

 情况2:数据包就直接丢了

在这个过程中,假如说中间有一个数据包丢了,那么主机A就迟迟无法等到对方返回的ACK从1001开始,B主机一直在等待A的SYN,索要1001这个数据包且永远也得不到。

总结这两种丢包的处理

第一种情况对于ACK的丢失,不作任何处理  

第二种情况对于数据的丢失,只需要把缺失的数据重传就行,其他数据不用重传。

流量控制

窗口的机制很重要,窗口大小是可变的,通过窗口的大小来控制发送方发送的速度,发送的太快,接收方容易处理不过来。但是窗口越大单位时间发的数据就越多,效率就越高。窗口越小,单位时间发的数据就越少。

那么具体来说是如何控制速度呢,接收方有一个接受缓冲区,也就是阻塞队列。

以空闲空间的大小作为发送方发送数据的窗口大小,也就是上图中未使用的空间。需要把这个数值告诉发送方,接收方会返过来给发送方返回一个ACK,在ACK报文中,在TCP的报头中,制定一个字段来表示上述的空闲空间的大小。

 

上图中,16位窗口大小,只会在ack报文中生效,含义就是接收方接收缓冲区空闲空间的大小,这不意味着窗口大小就是64kb,因此TCP是可扩展的,有一个扩展因子可以将其扩展。 

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

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

相关文章

推荐网站(9)pixabay免费可商用的图片、视频、插画、矢量图、音乐

今天推荐一款可以免费可商用的图片、视频、插画、矢量图、音乐的资源网站,这里面的所以东西都是免费的,并且可以商用。对那些做视频剪辑的人来说帮助非常大。它里面的资源非常的丰富,质量也高。 比如搜索下雨 链接直达:https://pi…

解决webstorm没有vue语法提示;webstorm没有代码提示

解决webstorm没有vue语法提示;webstorm没有代码提示 使用webstorm 2023.x 开发vue项目。发现死活没有vue语法提示,即便是npm install、清理缓存。对比其他vue项目却有语法提示,最后发现依赖库被忽略了: 删除掉node_modules 的忽略…

huggingface:利用git克隆目标资源

前言 因为有很多模型资源都被放在了huggingface上,为了下载它们,着实让一个不懂git的人犯了难,绕了很多远路,甚至将不需要解决的问题也都拿上了台面,因此我将在本篇博客中记载一些关于【huggingface】中利用git克隆目标…

apisix3.9.1 和 dashboard 离线安装

服务器配置 centos7 linux x86 64 前置 需要将离线安装包上传到服务器上 {上传目录 /root/apisix-soft/ } 【建议:优先上传etcd-*.jar \ apisix-*.rpm \ cyrus-*.rpm \ openldap-*.rpm 等安装好apisix后再上传apisix-dashboard-*.rpm】 可以自行网上寻找,或找一台可…

Python接口自动化测试之动态数据处理

在前面的知识基础上介绍了在接口自动化测试中,如何把数据分离出来,并且找到它的共同点,然后依据这个共同点来找到解决复杂问题的思想。我一直认为,程序是人设计的,它得符合人性,那么自动化测试的&#xff0…

使用命令查看电脑最大支持物理内存容量

一、Windows 系统 以管理员身份运行 cmd C:\WINDOWS\system32>wmic memphysical get maxcapacity /format:value将返回值除以1024,再除以1024,即本机最大支持的内存容量 或一行命令直接获取返回值 for /f "tokens2 delims" %I in (wmic…

怎么给视频加水印?2招轻松搞定

在数字媒体时代,视频水印作为一种有效的版权保护手段,被广泛应用于各种场景。给视频添加水印不仅可以防止内容被恶意盗用,还能增加视频的辨识度,提升品牌形象。本文将为您介绍2种简单易行的方法,教您怎么给视频加水印&…

保研机试之【动态规划】

本文为博客:动态规划解题套路框架 | labuladong 的算法笔记 的笔记 前言 动态规划问题的一般形式就是求最值,求解动态规划的核心问题是穷举。动态规划三要素为:最优子结构、重叠子问题、状态转移方程。首先要判断,该问题是否具有…

模电·场效应管放大电路的动态分析_039

场效应管放大电路的动态分析 一、场效应管的低频小信号等效模型二、基本共源放大电路的动态分析三、基本共漏放大电路的动态分析 一、场效应管的低频小信号等效模型 与分析晶体管的 h h h参数等效模型相同,将场效应管也看成一个两端口网络,栅极与源极之间…

MobileNet 网络详解

一、了解 网络亮点: 1、DW网络,大大减少运算量和参数数量 2、增加超参数:控制卷积层卷积核个数的超参数 ,控制图像输入大小的超参数 ,这两个超参数是人为设定的,不是机器学习到的。 二、DW卷积&#xff…

怎么防止源代码防泄密

随着数字化时代的到来,源代码作为企业和个人的重要资产之一,承载着无价的知识和创新。然而,源代码泄露已成为当今信息安全领域的重要挑战之一,给企业带来了严重的经济损失和声誉风险。面对这一挑战,我们有责任加强对源…

亿级流量系统架构设计与实战

💂 个人网站:【 摸鱼游戏】【神级代码资源网站】【工具大全】🤟 一站式轻松构建小程序、Web网站、移动应用:👉注册地址🤟 基于Web端打造的:👉轻量化工具创作平台💅 想寻找共同学习交…

【火热征稿~~】2024年心理、哲学与历史国际会议(ICPPH 2024)

2024年心理、哲学与历史国际会议(ICPPH 2024) 2024 International Conference on Psychology, Philosophy, and History 【会议简介】 2024年心理、哲学与历史国际会议将于历史文化名城武汉召开。此次盛会集结了来自世界各地的心理学家、哲学家和历史学…

01软件下载安装和P解

凯哥英语视频 软件下载安装和P解 凯哥英语视频1.官网直接下,专业版安装不会有人不会吧实在下载不到就去我这百度云吧结语 1.官网直接下,专业版 点击前往逛网下载https://www.jetbrains.com/pycharm/ 下载专业版,奶茶外卖都能点,只…

【爬虫】爬取股票数据写入数据库并显示(四)

本文所涉及代码已全部打包上传,需要可以到文章末尾查看获取方式,免费,仅做学习交流!!! 股票客户端软件 2024/05,本文主要内容如下: 使用python requests爬取东方财富官网数据。将爬…

ros1版本apollo感知融合算法

apollo.ros-7.0.0 本文章针对apollo 7.0.0版本进行了ros1移植,具体介绍见下文。 PS:项目开发详细了解可在评论区留言。 ros版本apollo7.0.0感知算法 基于ros1的apollo 7.0.0感知融合算法。 简介 此项目基于ros1的apollo 7.0.0感知融合算法&#xff0…

05. 【Java教程】第一个 Java 程序

本节我们将以Windows操作系统为例,编写并执行第一个Java程序。在这之前,请确保你的操作系统上已经安装了JDK 1. 编译程序 大家可能有个疑问,为什么需要编译程序呢?计算机不能直接执行我们编写的源代码吗? 这是由于计…

OV SSL证书的特点

OV SSL证书,全称为Organization Validation SSL Certificate(组织验证型SSL证书),是一种中级的SSL证书类型。与仅验证域名所有权的DV(Domain Validation)证书不同,OV证书在颁发前会执行更加严格…

Jmeter接口测试之参数化

在接口测试中,某些时候一些场景会使用到参数化的场景,参数化简单的说就是同一个请求需要不同的数据,比如在性能测试中需要并发多个用户的场景,这样的目的是为了模拟真实的用户场景,需要模拟不同的账号,这里…

ZL-016D多通道小鼠主动跑轮系统主要研究动物生活节律

简单介绍: 多通道小鼠主动跑轮系统是由动物本身自发运动来推动跑轮转动。在这种构型中,笼内动物长期活动的信息,如跑轮转动方向、转数、累计总行程等,能够使用编码器进行长度计记录。此装置由转轮组件、笼体、以及转动方向速度传…