TIME_WAIT相关知识

news2024/12/29 9:52:24

四次挥手

在这里插入图片描述
这是TCP四次握手的过程图。
TCP 连接终止时,主机 1 先发送 FIN 报文,主机 2 进入 CLOSE_WAIT 状态,并发送一个 ACK 应答,同时,主机 2 通过 read 调用获得 EOF,并将此结果通知应用程序进行主动关闭操作,发送 FIN 报文。主机 1 在接收到 FIN 报文后发送 ACK 应答,此时主机 1 进入 TIME_WAIT 状态。
主机 1 在 TIME_WAIT 停留持续时间是固定的,是最长分节生命期 MSL(maximum segment lifetime)的两倍,一般称之为 2MSL。和大多数 BSD 派生的系统一样,Linux 系统里有一个硬编码的字段,名称为TCP_TIMEWAIT_LEN,在CentOS 7中可以通过cat /proc/sys/net/ipv4/tcp_fin_timeout看到是60
在这里插入图片描述

也就是说,Linux 系统停留在 TIME_WAIT 的时间为固定的 60 秒
请记住只有发起连接终止的一方会进入 TIME_WAIT 状态

TIME_WAIT 的作用

1.为了确保最后的 ACK 能让被动关闭方接收,从而帮助其正常关闭。

如果主机 1 没有维护TIME_WAIT状态,而直接进入CLOSED状态,它就失去了当前状态的上下文,只能回复一个RST操作,从而导致被动关闭方出现错误。
现在主机 1 知道自己处于TIME_WAIT的状态,就可以在接收到FIN报文之后,重新发出一个 ACK报文,使得主机 2 可以进入正常的CLOSED状态。

  1. 防止上一次连接中的包,迷路后重新出现,影响新连接

我们知道,在网络中,经常会发生报文经过一段时间才能到达目的地的情况,产生的原因是多种多样的,如路由器重启,链路突然出现故障等。如果迷走报文到达时,发现 TCP 连接四元组(源 IP,源端口,目的 IP,目的端口)所代表的连接不复存在,那么很简单,这个报文自然丢弃。
允许老的重复分节在网络中消逝 TCP分节可能由于路由器异常而“迷途”,在迷途期间,TCP发送端可能因确认超时而重发这个分节,迷途的分节在路由器修复后也会被送到最终目的地,这个原来的迷途分节就称为lost duplicate。 在关闭一个TCP连接后,马上又重新建立起一个相同的IP地址和端口之间的TCP连接,后一个连接被称为前一个连接的化身(incarnation)。那么有可能出现这种情况,前一个连接的迷途重复分组在前一个连接终止后出现,从而被误解成从属于新的化身,那么这个报文会被误认为是连接“化身”的一个 TCP 分节,这样就会对 TCP 通信产生影响——有可能把原连接的“化身”(新连接)给关闭。

经过 2MSL 这个时间,足以让两个方向上的分组都被丢弃,使得原来连接的分组在网络中都自然消失,再出现的分组一定都是新化身所产生的。
在这里插入图片描述

2MSL 的时间是从主机 1 接收到 FIN 后发送 ACK 开始计时的;如果在 TIME_WAIT 时间内,因为主机 1 的 ACK 没有传输到主机 2,主机 1 又接收到了主机 2 重发的 FIN 报文,那么 2MSL 时间将重新计时。道理很简单,因为 2MSL 的时间,目的是为了让旧连接的所有报文都能自然消亡,现在主机 1 重新发送了 ACK 报文,自然需要重新计时,以便防止这个 ACK 报文对新可能的连接化身造成干扰。

TIME_WAIT 的危害

过多的 TIME_WAIT 的主要危害有两种:

第一是内存资源占用,这个目前看来不是太严重,基本可以忽略。
第二是对端口资源的占用,一个 TCP 连接至少消耗一个本地端口。要知道,端口资源也是有限的,一般可以开启的端口为 32768~61000 ,也可以通过net.ipv4.ip_local_port_range指定,如果 TIME_WAIT 状态过多,会导致无法创建新连接。

TIME_WAIT过多的解决方法

解决方法有以下几种:

1.一个暴力的方法是通过 sysctl 命令,将系统值net.ipv4.tcp_max_tw_buckets调小。
2.调低 TCP_TIMEWAIT_LEN,重新编译系统
3.我们可以通过设置套接字选项,来设置调用 close 或者 shutdown 关闭连接时的行为,使用使用到的函数是int setsockopt(int sockfd, int level, int optname, const void *optval, socklen_t optlen),具体的设置方法可以看一下《网络编程实战》
4.使用net.ipv4.tcp_tw_reuse选项。

此文章为11月Day 2学习笔记,内容来源于极客时间《网络编程实战》。

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

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

相关文章

uniapp app端选取(上传)多种类型文件

这里仅记录本人一些遇到办法,后台需要file对象,而App端运行在jsCore内,并非浏览器环境,并没有File类,基本返回的都是blob路径,uni-file-picker得app端只支持图片和视频,我这边需求是音视频都要支…

浏览器请求http地址,自动跳转成https

谷歌浏览器: 点击url地址左侧的锁,选择【网站设置】 点击【隐私和安全】,将【不安全内容】改为允许,然后刷新即可

协力共创智能未来:乐鑫 ESP RainMaker 云方案线下研讨会圆满落幕

近日,乐鑫 ESP RainMaker 云方案线下研讨会(深圳)在亚马逊云科技与合作伙伴嘉宾的支持下成功举办,吸引了众多来自智能家电、照明电工、能源和宠物等行业的品牌客户、方案商和制造商。研讨会围绕如何基于乐鑫 ESP RainMaker 硬件连…

关于客户旅程地图:你需要知道的一切

客户旅程地图(Customer Journey Map)是一种工具,用于可视化和理解客户与品牌或产品互动的全过程。它以客户的角度展示了他们的互动,从最初的意识阶段到购买决策,再到购买和售后支持。客户旅程地图有助于企业深入了解客…

什么是物流RPA?物流RPA解决什么问题?物流RPA实施难点在哪里?

RPA指的是机器人流程自动化,它是一套模拟人类在计算机、平板电脑、移动设备等界面执行任务的软件。通过RPA,可以自动完成重复性、繁琐的工作,提高工作效率和质量,降低人力成本。RPA适用于各种行业和场景,例如财务、人力…

Redis基础教程

Redis基础教程 Redis介绍 官方网站:https://redis.io/ Redis是一种键值型的NoSql数据库,这里有两个关键字: 键值型:Redis中存储的数据都是以key、value对的形式存储NoSql:相对于传统关系型数据库而言,有…

关键词搜索亚马逊商品数据接口(标题|主图|SKU|价格|优惠价|掌柜昵称|店铺链接|店铺所在地)

亚马逊提供了API接口来获取商品数据。其中,关键词搜索亚马逊商品接口(item_search-按关键字搜索亚马逊商品接口)可以用于获取按关键字搜索到的商品数据。 通过该接口,您可以使用API Key和API Secret来认证身份,并使用…

Seata 四种事务模式

Seata 是一款开源的分布式事务解决方案,致力于提供高性能和简单易用的分布式事务服务。Seata 将为用户提供了 AT、TCC、SAGA 和 XA 事务模式,为用户打造一站式的分布式解决方案。 全文参考文献:中文文档 TC (Transaction Coordinator) - 事务…

Redis入门指南学习笔记(2):常用数据类型解析

一.前言 本文主要介绍Redis中包含几种主要数据类型:字符串类型、哈希类型、列表类型、集合类型和有序集合类型。 二.字符串类型 字符串类型是Redis中最基本的数据类型,它是其他4种数据类型的基础,其他数据类型与字符串类型的差别从某种角度…

HALCON的综合应用案例【01】: 3D 算法处理在 Visual Studio 2019 C# 环境中的集成实例

前言: HALCON 为一款比较流行的商业视觉处理软件,他提供了多种开发的模式,可以在HALCON中开发,也可以将HALCON的设计通过导出库的形式集成到其他开发环境里面,以方便系统集成。本文为笔者自己的一个3D 视觉检测项目,利用HALCON的3D 库开发算法,然后,将算法集成到 MS-V…

指挥通信车360度3d虚拟互动展示系统的优势及特点

通信车是装有通信装备,用于保障通信联络的专用车辆,用于偏僻/特殊环境下的机动通信。并且机动通信局装备通常分为应急综合通信车、网络管理车、程控电话车、自适应跳频电台车、数字扩频接力车、散射通信车、卫星通信车、光缆引接车、线缆收放车和通信电源…

医疗数据可视化大屏:重构医疗决策的未来

医疗行业一直是信息密集型领域之一,它的复杂性不仅在于患者病历和医疗数据的海量积累,还包括了病情诊断、医疗资源分配、病患治疗等多层次的挑战。随着信息技术的不断发展,医疗数据可视化大屏成为了一种创新性的工具,它为医疗管理…

Linux学习笔记之一(计算机网络基础)

Linux learning note 1、计算机网络1.1、IP地址和MAC地址1.2、NAT、端口1.3、动态IP、静态IP、DHCP1.4、子网掩码、网关地址、DNS服务器1.5、TCP、UDP、ftp、http 2、虚拟机的网络管理2.1、桥接模式2.2、NAT模式2.3、仅主机模式2.4、总结 1、计算机网络 1.1、IP地址和MAC地址 …

python:将多个9波段影像tif文件转成numpy格式保存

作者:CSDN @ _养乐多_ 最近有粉丝问,如何将多个9波段的Aster影像tif文件转成numpy格式保存,然后输入网络进去训练。本文提供了两种思路和代码。 结果如下图所示, 文章目录 一、简单方法(分两步)二、端到端方法(一步到位)一、简单方法(分两步) 先将所有的多波段影像…

葡萄酒中的“多酚”有机化合物

“多酚”是在植物中发现的有机化合物,包括树皮、种子、坚果、茶叶和木材。单宁是一种多酚,它们完全是天然的,但是尝起来很苦。如果你是一个茶迷,你应该知道喝一口高单宁的红茶会使你的口腔内侧起皱。 葡萄也含有大量的单宁&#…

文心一言画图体验1.0

文心一言画图体验1 版本:文心大模型3.5 文心一言官方链接:https://yiyan.baidu.com/ 1、画一幅画:在大树下喝啤酒的熊猫,水墨风格,中国风,印象主义,写意,薄涂 2、画一幅画&#x…

一、VPN基础

VPN基础 1、定义及特征2、VPN优势3、VPN分类4、VPN体系结构5、VPN实现的模式 —————————————————————————————————————————————————— 1、定义及特征 虚拟专用网VPN是依靠Internet服务提供商ISP和网络服务提供商NSP在公共网…

如何保证跨国传输的安全性,了解这篇文章就够了

在当今的全球化时代,跨国传输是许多企业不可或缺的业务需求,无论是进行远程协作、数据分析、项目交付、市场拓展等,都需要在不同国家或地区之间进行数据、信息、货物或服务的传输。然而,跨国传输也面临着很多挑战和风险&#xff0…

中兴路由器、小米路由器无线信号强度对比

最近小米新推出的路由器小米AX3000T非常火,在网上看到有好多人都在安利,引起了我的兴趣,刚好老家的路由器用了这么久也是时候要换一个了,毕竟我妈老说上网卡??所以我立马就在PDD搞了一台回来,打算和我现在家里用的中…

【进程控制⑥】:进程替换/exec*()系列接口

【进程控制⑥】:进程替换/ exec*()系列接口 一.进程替换原理二.替换特点1.独立性2.唯一性3.不变性4.不返回 三.程序替换应用【exec*系列系统调用】①execl:②execlp:③execv:④execle: 一.进程替换原理 我…