nux下netstat --timers / -o详解及keepalive相关

第一列,一般有一下几种状态;

keepalive - #表示是keepalive的时间计时

on - #表示是重发(retransmission)的时间计时

off - #表示没有时间计时

timewait - #表示等待(timewait)时间计时

第二列,

(576.47/0/0) -> (a/b/c)

a - #计时时间值(当第一列为keepalive的时候,a代表keepalive计时时间;当第一列为on的时候,a代表重发(retransmission)的时间计时;当第一列为timewait的时候,a代表等待(timewait)的时间计时)

b - #已经产生的重发(retransmission)次数

c - #keepalive已经发送的探测(probe)包的次数

注:

1、keepalive的最大时间值跟tcp_keepalive_time的值有关系,tcp_keepalive_time的值,linux默认为7200秒,即2小时,代表的意思为:建立连接后,如果7200秒内连接没有任何数据交互传输,那么服务器将发送探测(probe)包。这里的探测(probe)包也相当于心跳一样。

2、探测(probe)包的相关内核参数跟tcp_keepalive_intvl和tcp_keepalive_probes有关系,tcp_keepalive_probes代表总共发送探测(probe)包的个数(默认为9个),tcp_keepalive_intvl代表发送一个探测(probe)包后,多少秒没有收到回复,则再发送个探测(probe)包,也代表了之前发送的探测(probe)包超时失效(默认为75秒)。再所有的探测(probe)包都发完之后还是没收到回应,那么服务器会主动端口这个连接(长连接)。所以一般如果第二列的c为0的话,a的范围在0 ~ 7200之间,7200为tcp_keepalive_time的值,比如keepalive (178.06/0/0);如果c不为0,但是不可能大于tcp_keepalive_probes的值的,那么a的范围在0 ~ 75, 75为tcp_keepalive_intvl的值。比如keepalive (18.06/0/2)。

3、这里再说一下keepalive的工作原理

若在一个给定连接上,7200秒之内无任何活动,服务器便向客户端发送一个探测段。(我们将在下面的例子中看到探测段的样子。)客户端主机必须是下列四种状态之一:

1) 客户端主机依旧活跃(up)运行,并且从服务器可到达。从客户端TCP的正常响应,服务器知道对方仍然活跃。服务器的TCP为接下来的两小时复位存活定时器,如果在这两个小时到期之前,连接上发生应用程序的通信,则定时器重新为往下的两小时复位,并且接着交换数据。

2) 客户端已经崩溃,或者已经关闭(down),或者正在重启过程中。在这两种情况下,它的TCP都不会响应。服务器没有收到对其发出探测的响应,并且在75秒之后超时。服务器将总共发送10个这样的探测,每个探测75秒。如果没有收到一个响应,它就认为客户端主机已经关闭并终止连接。

3) 客户端曾经崩溃,但已经重启。这种情况下,服务器将会收到对其存活探测的响应,但该响应是一个复位,从而引起服务器对连接的终止。

4) 客户端主机活跃运行,但从服务器不可到达。这与状态2类似,因为TCP无法区别它们两个。它所能表明的仅是未收到对其探测的回复。

4、等待(timewait)时间计时,第二列的a值,最大为60,这里说一下为什么为60,这里存在一个MSL(Maximum Segment Lifetime)的概念,tcp如果在time_wait状态下,会保持两倍MSL的时间值,然后连接才会断开,当然存在time_wait这种状态的话,那么肯定是主动关闭tcp连接那一方,这个如果了解tcp的四次握手概念就知道是为啥了。RFC793定义了MSL为2分钟,Linux设置成了30s,所以linux系统上,time_wait的值最大为60s。所以第一列为timewait时,第二列只有a有值,b、c都为0,比如

timewait (48.32/0/0)。

5、如果State列为CLOSE_WAIT状态是,Timer列多为off (0.00/0/0),这又是为何,因为CLOSE_WAIT的是属于被动关闭那一方,这个是没有超时(timeout)设置的,所以也就不用计时了。CLOSE_WAIT除非你杀进程,CLOSE_WAIT是不会自动消失的。一个CLOSE_WAIT会维持至少2个小时的时间。当然不消失意味着占着资源呢,这里就是占着FD。

6、第一列为on的情况,第二列一般的a,b是有值的,代表重发时间计时和重发的次数,比如on (3.93/4/0),但是也有可能第二列的c也有值,比如:on (2.28/5/2),这种情况,一般都是从keepalive状态转化为on的状态的,而且在on的状态下,第二列的c的值是不会变的,因为c代表着是keepalive的已经发送的探测(probe)包的次数。

netstat -anop|more 查看网络队列的更多相关文章

  1. netstat 和 lsof 查看网络状态

    netstat和lsof都是linux下的工具,可以用于查看系统的网络状态. netstat netstat可以打印 网络连接,路由表,接口统计数据,还有多播和masquerade连接相关的东西(不熟 ...

  2. Linux下用netstat查看网络状态、端口状态(转)

    转:http://blog.csdn.net/guodongdongnumber1/article/details/11383019 在linux一般使用netstat 来查看系统端口使用情况步.  ...

  3. 在Linux下用netstat查看网络状态、端口状态

    在Linux下用netstat查看网络状态.端口状态 在linux一般使用netstat 来查看系统端口使用情况步. netstat命令是一个监控TCP/IP网络的非常有用的工具,它可以显示路由表.实 ...

  4. Linux下用netstat查看网络状态、端口状态

    在linux一般使用netstat 来查看系统端口使用情况步. netstat命令是一个监控TCP/IP网络的非常有用的工具,它可以显示路由表.实际的网络连接以及每一个网络接口设备的 netstat命 ...

  5. linux查看网络链接状况命令netstat

    linux查看网络链接状况命令 netstat 参数如下: -a 显示所有socket,包括正在监听的. -c 每隔1秒就重新显示一遍,直到用户中断它. -i 显示所有网络接口的信息,格式同“ifco ...

  6. Linux使用netstat查看网络状态

    查看本机的网络状态.使用netstat查看网络状态.显示系统端口使用情况.UDP类型的端口.TCP类型的端口.只显示所有监听端口.只显示所有监听tcp端口. 命令使用举例 命令 说明 netstat ...

  7. 用netstat查看网络状态详解

    --用netstat查看网络状态详解 -----------------------------2014/06/11 一.Linux服务器上11种网络连接状态:                     ...

  8. iostat iotop 查看硬盘的读写、 free 查看内存的命令 、netstat 命令查看网络、tcpdump 命令

    iostat 命令 查看硬盘的使用情况: iostat iostat -x iotop 命令: 若没安装先安装: yum install iotop -y free 命令,用于查看内存的使用量: fr ...

  9. FreeBSD查看网络情况

    FreeBSD查看网络情况 记录一下FreeBSD下常用的统计当前系统网络连接状态的一些命令: 1)统计80端口连接数 netstat -nat|grep -i "80"|wc - ...

随机推荐

  1. 【NOIP2016提高A组模拟9.14】数列编辑器

    题目 分析 比赛上,没有注意到询问只询问光标前面,于是只打了个暴力. 因为询问只询问光标前面,首先,当光标向后每移动到一个位置,顺便将这个位置的前缀和,和最大前缀和求出来. 总之,模拟 #includ ...

  2. git 清除缓存

    清除git缓存 git config --local --unset credential.helper git config --global --unset credential.helper g ...

  3. postman导入接口

    给大家说一个poatman导入接口的好办法,平常要是想在postman上模拟接口,如果复杂的很难配,其实有一个很简单的方法: 现在我模拟一下百度搜索时历史记录的接口: 点击Copy as cUrl 然 ...

  4. 模板引擎ejs

    1.网站 https://ejs.co/ https://ejs.bootcss.com/ 2.app.js var http=require("http"); var ejs = ...

  5. #418 Div2 Problem B An express train to reveries (构造 || 全排列序列特性)

    题目链接:http://codeforces.com/contest/814/problem/B 题意 : 有一个给出两个含有 n 个数的序列 a 和 b, 这两个序列和(1~n)的其中一个全排列序列 ...

  6. select客户端模型封装——回调方式快速建立客户端

    SockClient.h #pragma once #include<functional> #define _WINDOWS #ifdef _WINDOWS #define _WINSO ...

  7. 【canvas学习笔记六】状态保存和变换

    save()和restore() save() 保存当前状态,将当前canvas的状态存入栈中. restore() 恢复之前save的一个状态,将之前的状态从栈中弹出. 保存的当前状态包含以下信息: ...

  8. 金蝶K3 WISE 13.1版本服务器虚拟机环境部署

    闲来无事,整个13.1版本的金蝶玩玩. 系统环境:WIN2008 R2,x64位 数据库:MSSQL 2008 R2,X64位 记录下操作步骤: 1.准备安装软件,见图: 2.安装资源包,.net3. ...

  9. [BZOJ2669][CQOI2012]局部极小值:DP+容斥原理

    分析 题目要求有且只有一些位置是局部极小值.有的限制很好处理,但是只有嘛,嗯...... 考虑子集反演(话说这个其实已经算是超集反演了吧还叫子集反演是不是有点不太合适),枚举题目给出位置集合的所有超集 ...

  10. 关于MySQL去除查询结果重复值

    下面先来看看例子: table:  id name  1 a  2 b  3 c  4 c  5 b 库结构大概这样,这只是一个简单的例子,实际情况会复杂得多. 比如我想用一条语句查询得到name不重 ...