文档章节

linux下tcp状态是从哪查出来的

tinyhare
 tinyhare
发布于 2016/04/20 15:12
字数 308
阅读 49
收藏 1

linux中,各种tcp连接的状态存储在 /proc/net/tcp 文件中

其中st列就是tcp的各种状态,那么这个值代表什么意思呢? 有网友从内核源码里找到了这个

enum {
    TCP_ESTABLISHED = 1,
    TCP_SYN_SENT,
    TCP_SYN_RECV,
    TCP_FIN_WAIT1,
    TCP_FIN_WAIT2,
    TCP_TIME_WAIT,
    TCP_CLOSE,
    TCP_CLOSE_WAIT,
    TCP_LAST_ACK,
    TCP_LISTEN,
    TCP_CLOSING,    /* Now a valid state */
    TCP_MAX_STATES  /* Leave at the end! */
};

那么各种状态对应的数字就清楚了。

我们以dstat工具为例,看看它是怎么统计的各种tcp状态的数量的。

class dstat_tcp(dstat):
    def __init__(self):
        self.name = 'tcp sockets'
        self.nick = ('lis', 'act', 'syn', 'tim', 'clo')
        self.vars = ('listen', 'established', 'syn', 'wait', 'close')
        self.type = 'd'
        self.width = 4
        self.scale = 100
        self.open('/proc/net/tcp', '/proc/net/tcp6')

    def extract(self):
        for name in self.vars: self.val[name] = 0
        for l in self.splitlines():
            if len(l) < 12: continue
            ### 01: established, 02: syn_sent,  03: syn_recv, 04: fin_wait1,
            ### 05: fin_wait2,   06: time_wait, 07: close,    08: close_wait,
            ### 09: last_ack,    0A: listen,    0B: closing
            if l[3] in ('0A',): self.val['listen'] += 1 
            elif l[3] in ('01',): self.val['established'] += 1 
            elif l[3] in ('02', '03', '09',): self.val['syn'] += 1 
            elif l[3] in ('06',): self.val['wait'] += 1 
            elif l[3] in ('04', '05', '07', '08', '0B',): self.val['close'] += 1

从程序中看到,dstat将11种tcp状态分了5类做了下合并显示出来.

 

 

© 著作权归作者所有

共有 人打赏支持
tinyhare
粉丝 6
博文 19
码字总数 18465
作品 0
东城
运维
私信 提问
Linux-netstat命令小结

netstat命令在面试以及日常开发使用中都会经常出现,所以特地小结一波;首先要知道Netstat 命令用于显示各种网络相关信息,如网络连接,路由表,接口状态 ,连接,多播成员等等。 常见参数:...

sssssuuuuu666
03/16
0
0
linux下netstat --timers / -o详解及keepalive相关

在linux查看网络连接数或者网络状态,我一般用netstat或者lsof这两种,netstat的话有个时间计时功能,里面涉及到不少tcp/ip协议的知识,今天就来说一说我理解的netstat计时功能。 netstat -a...

在下郑小明
06/26
0
0
mysql数据库读写分离 数据同步

分布式开发的一些问题总结 我是用了两个xp(一个主的,一个从的)的系统测试成功的,linux系统我也做测试了,没有成功,不过我想我所遇到的问题是同一个问题,xp下的可以成功,linux下的应该也...

Neo_
2013/06/10
0
17
nf_conntrack满之解决方法

问题: 没有占用多少流量,但是网络连接很慢,ping超时。已发现被大量不同的机器访问导致tcp连接数非常高,nf_conntrack满了 nfconntrack满之解决方法 (2016-08-09 17:27:36) 转载▼ vim /var...

luoguo
2017/04/28
0
0
关于一条判断是否成功的SQL

有个表 t 字段 日期Date 时间Time 人员Man 状态Status 日期 时间 人员 状态2012-03-07 06:01:52 A failed2012-03-07 06:02:52 A failed2012-03-07 06:03:52 A success2012-03-07 06:04:52 B ......

雨山
2012/03/07
151
2

没有更多内容

加载失败,请刷新页面

加载更多

ViewPager+Fragment+FragmentPagerAdapter实现软件主界面

ViewPager之前的页面是由View构成的,现在由Fragment构成,之前的PagerAdapter这里也换成了FragmentPagerAdapter.因为PagerAdapter有 public Object instantiateItem(ViewGroup container, i......

鱼想吃肉
25分钟前
1
0
feign文件上传遇到的坑

明天写

王俊博客
30分钟前
1
0
scala的sorted,sortBy,sortWith

val lst = List(1,3,2,4,5) //scala中对于集合的排序有三种方法:sorted,sortBy,sortWith //sorted方法对一个集合进行自然排序,传递一个Ordering隐式参数 def sorted[B >: A](imp...

whoisliang
46分钟前
1
0
区块链扩容最佳途径?十分钟讲清楚侧链技术

今天我们来讲区块链扩容的另一个主流方案——侧链,侧链可作为解决区块链扩容难题的一种有效解决方案。有些人认为,从理论上说,这种解决方案可让所有人都满意。 基础概念 侧链协议本质上是一...

HiBlock
47分钟前
1
0
3年经验Java程序员面阿里P6 差距在哪里

虽然这位小伙伴觉得自己工作三年了,结果阿里连面都不面就把自己挂了,这让自己感到很伤心。但是还是有网友觉得,三年不到p6,很正常啊,明年再面就没有问题啦! Java程序员3年经验面阿里P6,...

架构师springboot
50分钟前
2
0

没有更多内容

加载失败,请刷新页面

加载更多

返回顶部
顶部