linux查看tcp连接⽇志,linux下tcp状态是从哪查出来的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__(lf):
lf.name = 'tcp sockets'模具学徒
lf.nick = ('lis', 'act', 'syn', 'tim', 'clo')
lf.vars = ('listen', 'established', 'syn', 'wait', 'clo')
lf.width = 4古诗登高
lf.scale = 100
lf.open('/proc/net/tcp', '/proc/net/tcp6')
def extract(lf):
for name in lf.vars: lf.val[name] = 0
津力达颗粒说明书
for l in lf.splitlines():
if len(l) < 12: continue
### 01: established, 02: syn_nt, 03: syn_recv, 04: fin_wait1, ### 05: fin_wait2, 06: time_wait, 07: clo, 08: clo_wait,
英语鸡汤
### 09: last_ack, 0A: listen, 0B: closing
if l[3] in ('0A',): lf.val['listen'] += 1
仁者爱人
elif l[3] in ('01',): lf.val['established'] += 1
鸡腿饭的做法
elif l[3] in ('02', '03', '09',): lf.val['syn'] += 1
elif l[3] in ('06',): lf.val['wait'] += 1
elif l[3] in ('04', '05', '07', '08', '0B',): lf.val['clo'] += 1
从程序中看到,dstat将11种tcp状态分了5类做了下合并显⽰出来.