文档章节

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

tinyhare
 tinyhare
发布于 2016/04/20 15:12
字数 308
阅读 45
收藏 1
点赞 1
评论 0

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
博文 17
码字总数 16960
作品 0
东城
运维
Linux-netstat命令小结

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

sssssuuuuu666 ⋅ 03/16 ⋅ 0

关于/proc/$pid/fd socket:[number]

(转载自:https://blog.csdn.net/lkkey80/article/details/16856063) 众所周知,在相应进程的/proc/$pid/fd 目录下存放了此进程所有打开的fd。当然有些可能不是本进程自己打开的,如通过for...

shangluyi ⋅ 05/09 ⋅ 0

基于Nginx实现10万+并发,你应该做的Linux内核优化

基于Nginx实现10万+并发,你应该做的Linux内核优化 由于默认的linux内核参数考虑的是最通用场景,这明显不符合用于支持高并发访问的Web服务器的定义,所以需要修改Linux内核参数,是的Nginx...

linjin200 ⋅ 04/30 ⋅ 0

Linux系统安全工具之NMAP

Nmap (“Network Mapper(网络映射器)”) 是一款开放源代码的 网络探测和安全审核的工具。它的设计目标是快速地扫描大型网络,当然用它扫描单个主机也没有问题。Nmap以新颖的方式使用原始IP报...

余二五 ⋅ 2017/11/17 ⋅ 0

Linux运维工程师笔试题系列2(30题)

Linux运维工程师笔试题系列2(30题) 如果您对问题有疑问,或者认为答案不准确的,欢迎留言交流。 问题如下: 1. 下列哪个git命令不是合并代码用的: A git pull –rebase B git merge C gi...

优惠券发放 ⋅ 05/25 ⋅ 0

nf_conntrack满之解决方法

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

luoguo ⋅ 2017/04/28 ⋅ 0

Linux环境下纯Python无第三方库读写Netlink

原文地址:http://shajunxing.tpddns.cn:8888/web/blog/2018-03-28-Linux环境下纯Python无第三方库读写Netlink/index.html 基础知识 Netlink使用套接字的方式提供了应用程序和内核之间信息交...

shajunxing ⋅ 03/30 ⋅ 0

linux-4.16.8源码目录分析

【仍然是操作系统实验作业..我哭】【都是google来的答案,我什么都不知道...】 1.arch:与体系结构相关的代码,里面存放了很多cpu架构,比如arm,x86,MIPS,PPC等。Linux支持的每种体系结构(对...

qq_40172927 ⋅ 05/12 ⋅ 0

LINUX安装db2V10.5步骤

db2命令 DB2开启监控 LINUX安装db2V10.5步骤 2017-04-01 10:08:35| 分类: db2 |举报 |字号 订阅 下载LOFTER 我的照片书 |转自:http://blog.csdn.net/hanzheng260561728/article/details/50......

rootliu ⋅ 05/29 ⋅ 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 ⋅ 2

没有更多内容

加载失败,请刷新页面

加载更多

下一页

Java集合类总结笔记

一、集合类的层次关系 主要容器集合类的特点: ArrayList 一种可以动态增长和缩减的索引序列 LinkedList 一种可以在任何位置进行高效地插入和删除的有序序列 ArrayDeque 一种用循环数组实现的...

edwardGe ⋅ 1分钟前 ⋅ 0

spring RMI远程调用

RMI https://www.cnblogs.com/wdh1995/p/6792407.html

BobwithB ⋅ 7分钟前 ⋅ 0

Jenkins实践2 之基本配置

1 插件管理 系统管理->插件管理 在可选插件中可以自主安装插件 2 管理用户 系统管理->管理用户->新建用户 3 安全配置 系统管理->全局安全配置 授权策略 选择安全矩阵 然后添加现有的用户,赋...

晨猫 ⋅ 7分钟前 ⋅ 0

c++智能指针

1、是一种泛型类,针对指针类型的泛型类,会保存指针 2、重载了符号 *和-> 对智能指针使用这两个符号,相当于对保存的泛型使用这两个符号 3、当智能指针引用计数为0时,会去释放指针指向的资...

国仔饼 ⋅ 8分钟前 ⋅ 0

Spring Boot错误处理机制

1)、SpringBoot默认的错误处理机制 默认效果: 1)、浏览器,返回一个默认的错误页面 浏览器发送请求的请求头: 2)、如果是其他客户端,默认响应一个json数据 原理: 可以参照ErrorMvcAut...

小致dad ⋅ 9分钟前 ⋅ 0

ftp连接不上的终极办法 SFTP

假如FTP由于各种原因就是连不上,那么用SFTP协议吧,使用登录服务器的账号密码。

sskill ⋅ 14分钟前 ⋅ 0

Unity 围绕旋转角度限制(Transform.RotateAround)

在 Unity 中可以利用 Transform.RotateAround 围绕指定物体进行旋转,但某些情况下可能需要对旋转角度进行控制。我是先计算出预设角度大小,然后判断是否在限定角度范围内是则进行旋转。 相关...

大轩 ⋅ 15分钟前 ⋅ 0

阿里沙箱环境支付宝测试demo

阿里支付宝支付和微信支付,包括:阿里沙箱环境支付宝测试demo,支付宝支付整合到spring+springmvc+mybatis环境和微信整合到如上环境,功能非常齐全,只需要修改对应的配置文件即可,帮助文档...

码代码的小司机 ⋅ 17分钟前 ⋅ 0

JDK1.6和JDK1.7中,Collections.sort的区别,

背景 最近,项目正在集成测试阶段,项目在服务器上运行了一段时间,点击表格的列进行排序的时候,有的列排序正常,有的列在排序的时候,在后台会抛出如下异常,查询到不到数据,而且在另外一...

tsmyk0715 ⋅ 34分钟前 ⋅ 0

C++ 中命名空间的 5 个常见用法

相信小伙伴们对C++已经非常熟悉,但是对命名空间经常使用到的地方还不是很明白,这篇文章就针对命名空间这一块做了一个叙述。 命名空间在1995年被引入到 c++ 标准中,通常是这样定义的: 命名...

柳猫 ⋅ 39分钟前 ⋅ 0

没有更多内容

加载失败,请刷新页面

加载更多

下一页

返回顶部
顶部