当前位置: 首页 > 编程日记 > 正文

关于timewait状态

image

四次挥手

  1. 主动关闭连接的一方,调用close,协议层发送FIN包,在TCP报头的FIN字段设置为1,意思是我要和你断开链接,主动关闭连接的一方进入到了FIN_WATI_1状态
  2. 被动关闭的一方收到了FIN包之后,协议层回复ACK包,在他的TCP报头中将ACK设置为1,表示收到了对方的关闭连接请求,被动 的一方进入到了CLOSE_WAIT状态;主动关闭的一方收到了被动关闭一方的响应,等待对方关闭,主动关闭的一方进入到了FIN_WAIT_2状态;
    这里解释一下,为什么被动关闭的一方收到主动关闭一方的FIN包之后进入的状态是CLOSE_WAIT状态呢,因为此时是传输层,传输层要等待上层的close操作
  3. 被动关闭的一方在完成所有的数据传输之后,调用 close操作,此时发送FIN包,在TCP报头中将FIN字段设置为1,表示我要和你断开连接,等待对方的ACK,此时被动关闭的一方进入到了LAST_ACK状态
  4. 主动弄关闭的一方,收到了对方的FIN包之后,回复了ACK包,主动关闭的一方进入到了TIME_WATI状态,而被动关闭的一方进入到了CLOSED状态
  5. 主动关闭的一方等待了2MSL时间,结束TIME_WATI状态,进入了 CLOSED状态

为什么会有TIME_WAIT状态呢???

他的出现主要是为了解决网络丢包和网络不稳定所带来的其他问题:
1. 防止前一个连接的延迟数据包或者是丢失重传数据包被下一个连接使用,可能出现这样一种情况,用户在浏览器访问一个网站的时候,他的IP和端口号假设是192.168.3.2:8080,当用户再次在在浏览器中访问这个网站的时候,使用的IP和端口号恰巧还是192.168.3.2:8080,这个时候延迟数据或者是丢失重传的数据就会被新的 连接错误使用了
2. 防止最后传输的ACK包没有被对方接受,如果被动关闭的一方给主动关闭的一方发送了FIN,此时被动关闭的一方进入到了LAST_ACK状态,主动关闭连接的一方收到请求之后,回复ACK包,但是ACK丢失了,此时被动关闭的一方一直停留在LAST_ACK状态,被动方就会重发FIN包
如果TIME_WATI状态的很短,或者是没有这个状态,如果此时又新建立了一次连接,刚好这个连接是上次使用过的ip和port,这个时候就会收到错误连接的包,连接不成功

如何查看当前有timewait状态有哪些

netstat -n | awk '/^tcp/ {++S[$NF]} END {for(a in S) print a, S[a]}'  

TIME_WAIT 814
CLOSE_WAIT 1
FIN_WAIT1 1
ESTABLISHED 634
SYN_RECV 2
LAST_ACK 1

服务器timewait状态问题

Linux能够分配的文件描述符是有限的,服务器需要处理网络的数量巨大的请求,如果存在大量的timewait状态状态,势必会造成系统的资源浪费,甚至是服务宕机。因为服务器是需要客户端建立连接的,通过ip+port的方式,可以理解为是端口号处于timewait状态。服务器可以设置SO_REUSEADDR套接字选项来通知内核,如果端口忙,但TCP连接位于TIME_WAIT状态时可以重用端口。

相关文章:

DWZ基于ajax重复请求的修复

在同一个通用上传插件,每次都需要客户端去请求服务器,返回的html页面,如果请求的间隔很短的话,ajax会认为是重复作废的请求,这个时候需要修改一下源码来达到在短时间内重复请求也能得到响应找到js/dwz.ajax.js修改源码为function ajaxTodo(url, callback){t Date.parse(new D…

TLS/HTTPS 证书生成与验证

https://www.cnblogs.com/kyrios/p/tls-and-certificates.html 最近在研究基于ssl的传输加密,涉及到了key和证书相关的话题,走了不少弯路,现在总结一下做个备忘 科普:TLS、SSL、HTTPS以及证书 不少人可能听过其中的超过3个名词&am…

高并发系统搭建:web负载均衡

高并发系统搭建:web负载均衡 所谓的负载均衡就是让多个请求尽量均衡的分配到不同的机器上面去 1. HTTP负载均衡 当用户的请求发来之后,web服务器通过修改HTTP响应报头中的Location标记,返回一个新的url,然后浏览器继续请求这个…

centos 7.0 安装mysql_CentOS 7.0yum安装MySQL

1.下载mysql的repo源$ wget http://repo.mysql.com/mysql-community-release-el7-5.noarch.rpm2.安装mysql-community-release-el7-5.noarch.rpm包$ sudo rpm -ivh mysql-community-release-el7-5.noarch.rpm安装这个包后,会获得两个mysql的yum repo源:/…

UVa 11174 - Stand in a Line

http://uva.onlinejudge.org/index.php?optioncom_onlinejudge&Itemid8&pageshow_problem&problem2115 数学的特点在于不断的推导,此题还需要用到 欧拉定理和逆元的相关性质,推荐博客(有部分小错误):http…

计算背板带宽方法

背板带宽:端口数*端口速率*2包转发率:接口带宽(bps)/8bit/(64812)千兆包转发率:1.488Mpps百兆:0.1488Mpps万兆:14.88Mpps例如2950G-48背板2*1000*248*100*213600Mbps13.6Gbps相当于13.6/26.8个千…

Windows下安装PHP开发环境

一、Apache 因为Apache官网只提供源代码,如果要使用必须得自己编译,这里我选择第三方安装包Apache Lounge。 进入Apachelounge官方下载地址:http://www.apachelounge.com/download/首先下载并安装vc redist,这是Apache运行必需的一…

高并发简单设计

系统内存不足,主要是每次来一个请求的时候,就要创建倒排的哈希,这个时候如果高并发的情况下,就会出现问题,每次一个倒排索引占据内存,内存只有2G肯定是不够使用的 可以根据日志分析的结果,看看…

mysql 8.0数据备份恢复_第7章 备份和恢复

## 目录- 备份和恢复类型- 数据库备份方法- 例备份和恢复策略- 使用mysqldump进行备份- 使用二进制日志进行- 点时间(增量)恢复- MyISAM表维护和崩溃恢复备份数据库非常重要,这样您就可以恢复数据,并在发生问题时再次启动并运行,例如系统崩溃…

CSS 实例之打开大门

本个实例主要的效果如下图所示 本案例主要运用到了3D旋转和定位技术。具体步骤如下&#xff1a; 1、首先在页面主体加三个很简单的div标签&#xff1a; <div class"door"><div class"door-l"></div><div class"door-r">…

为 Asp.net 网站新增发送手机短信功能

本文旨在帮助那些为网站发送手机短信正在寻求解决方案还未最终找到解决方案的朋友提供参考。 适合人群 须满足一下条件之一&#xff0c;如果以下3个条件您都不满足&#xff0c;为节约您宝贵的时间&#xff0c;请终止阅读本篇文章。 条件如下&#xff1a; 1.一条短信内容进行短信…

搜索引擎Killed原因排查

问题描述 腾讯云单核2G内存&#xff0c;运行程序的时候&#xff0c;程序有时会挂掉了&#xff0c;设置ulimit -c unlimited之后&#xff0c;想要core文件&#xff0c;结果程序运行的时候&#xff0c;直接提示killed&#xff0c;没有出现core文件 调研查询 killed的原因多是因…

mysql 8.0配置主从同步_MySQL8.0.19开启GTID主从同步CentOS8

前言本次搭建目标为1主2从MySQL主从同步结构。采用CentOS8作为操作系统&#xff0c;IP为[10.0.0.211,10.0.0.212,10.0.0.213]。MySQL版本为8.0.19&#xff0c;端口均采用3306。本文仅讲解主从配置&#xff0c;因此安装MySQL的方式请参考安装文档。GTID模式介绍一、GTID Replica…

IO流总结笔记三

​ 字节流&#xff1a; 抽象基类&#xff1a;InputStream&#xff0c; OutputStream。 字节流可以操作任何数据。注意&#xff1a;字符流使用的数组是字符数组。Char [] chs 字节流使用的数组是字节数组。Byte [] bt 转换流&#xff1a; 特点&#xff1a;1&#xff0c;是字节流…

awk1.0 — awk基础

简介 grep&#xff0c;sed&#xff0c;awk被称为Linux文本处理的三剑客&#xff0c;各有特点 grep&#xff1a;适合文本的匹配和查找 sed&#xff1a;编辑匹配到的文本 awk&#xff1a;对文本进行格式化输出 awk简介 awk的基本语法是 awk [options] Pattern {Actions} …

mysql dump 参数_mysqldump常用参数

收集一些常用的mysqldump命令组合。备份数据库1.导出结构不导出数据 **复制代码代码如下:2.导出数据不导出结构3.导出数据和表结构4.导出特定表的结构导入数据&#xff1a;由于mysqldump导出的是完整的SQL语句&#xff0c;所以用mysql客户程序很容易就能把数据导入了&#xff1…

细心看完这篇文章,刷新对Javascript Prototype的理解

var person{name:ninja}; person.prototype.sayNamefunction(){return this.name; } 分析上面这段代码&#xff0c;看看有没有问题&#xff1f; 没错&#xff0c;这段代码是有问题的&#xff0c;我们可以通过Chrome看一下执行结果&#xff1a; 错误提示说找不到sayName 属性&am…

那些值得回味的MySQL的基础知识

那些值得回味的MySQL的基础知识 MySQL零碎知识点整理 题记&#xff1a; 在如今甚是流行的MySQL中有些基础的知识却是我们日常工作中处理问题容易忘却的一部分,所以不能忘了本&#xff0c;那么我们现在就去回忆那些曾经熟悉的基本吧&#xff0c;废话不多说了 基础常识&#xff…

awk2.0 — awk分隔符

再次重申awk的语法 awk [options] ‘Pattern {Actions}’ file1,file2… awk默认分隔符是空格&#xff0c;分隔符有分为“输入分隔符”和“输出分隔符”。 输入分隔符&#xff1a;awk在处理每一行文本的时候&#xff0c;以默认的空格将文本分隔成一个个单词作为变量。 输出分…

【C++自我精讲】基础系列二 const

【C自我精讲】基础系列二 const 0 前言 分三部分&#xff1a;const用法、const和#define比较、const作用。 1 const用法 const常量&#xff1a;const可以用来定义常量&#xff0c;不可改变&#xff0c;const常量在定义时必须初始化&#xff08;extern修饰时是特例&#xff09;。…

mysql system命令_mysql命令

关闭防火墙和selinux:systemctl stop firewalld.servicesetenforce 0永久关闭防火墙和selinux:systemctl disable firewalld.servicesed -i ‘/^SELINUX/s#enforcing#disabled#g’ /etc/selinux/config安装wget:yum install -y wget国内yum源:wget -O /etc/yum.repos.d/CentOS-…

django教程目录

什么是web框架&#xff1f; Do a web framework ourselves MVC和MTV模式 django的流程和命令行工具 Django的配置文件(settings) Django URL (路由系统) Django Views&#xff08;视图函数&#xff09; Template基础 Models admin的配置 Middleware cache Cookie & Session…

VRRP在企业网中的应用(H3C设备)

一&#xff1a;实验原理①VRRP概述&#xff1a;随着Internet的发展&#xff0c;人们对网络的可靠性的要求越来越高。对于局域网用户来说&#xff0c;能够时刻与外部网络保持联系是非常重要的。通常情况下&#xff0c;内部网络中的所有主机都设置一条相同的缺省路由&#xff0c;…

vue-cli脚手架(框架)

一、创建vue项目 npm install vue-cli -g #-g全局 (sudo)npm install vue-cli -g #mac笔记本vue-init webpack myvue #项目的名字 cd muvue npm install npm run dev 二、目录结构的说明 出现下面这样的图就说明成功了 三、import和require的区别 import一定要放在文件顶部…

poj 1679 次小生成树

次小生成树的求法: 1.Prime法 定义一个二维数组F[i][j]表示点i到点j在最小生成树中的路径上的最大权值。有个知识就是将一条不在最小生成树中的边Edge加入最小生成树时&#xff0c;树中要去掉的边就是Edge连接的两个端点i,j的F[i][j]。这样就能保存找到的生成树时次小生成树。 …

mysql金库模式_Python vault-anyconfig包_程序模块 - PyPI - Python中文网

vaultanyconfig" rel"nofollow">使用加载和转储功能扩展hvac hashicorp vault客户端任何配置。这允许自动混合来自保险库的机密&#xff0c;允许您存储配置填充了所有详细信息的文件保存为机密&#xff0c;然后访问hashicorp保险库将机密加载到内存字典中。支…

awk3.0 — awk变量

awk有一些内置变量和外置变量&#xff0c;内置变量就是awk自带的变量&#xff0c;用户可以拿来直接使用&#xff0c;如FS&#xff0c;OFS等 awk常用内置变量如下几种&#xff1a; FS&#xff1a;输入单词分隔符&#xff0c;默认是空格 OFS&#xff1a;输出单词分隔…

关于yum库的相关问题

局域网共享yum库的两种方式&#xff1a; 一种是基于HTTP的&#xff0c;需要配置httpd。 一种是基于FTP的。需要FTP的支持。 具体设置参数可参照网上的相关教程。 yum库的建立主要涉及到两点&#xff1a; 1、 Yum服务器安装createrepo并创建仓库 2、 安装完成之后&#xff0c;在…

[ JSOI 2015 ] Salesman

\(\\\) \(Description\) 给出一棵以\(1\)为根的\(N\)个节点的树&#xff0c;开始的时候你在\(1\)号节点。 除了\(1\)号节点以外&#xff0c;每个点都有访问次数限制\(t_i\)&#xff0c;即到达该点的次数上限。 除了\(1\)号点每个点还有一个权值\(w_i\)&#xff0c;这个权值可以…