Linux 下查看 TCP 的连接数和状态

文章
林里克斯

Linux 下查看 TCP 的连接数和状态


1.查看 TCP 的连接数和状态

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

#具体状态详情
ESTABLISHED #表示一个打开的连接,正常数据传输状态
TIME_WAIT   #等待一定的时间以确保远程 TCP 接收到连接中断请求的确认,处理完毕,等待超时结束的请求数
FIN_WAIT1   #等待 Server TCP 连接中断请求,或先前的连接中断请求的确认
FIN_WAIT2   #从 Server TCP 等待连接中断请求
CLOSING     #两侧都尝试关闭的连接
CLOSED      #没有任何连接状态
CLOSE_WAIT  #等待从本地用户发来的连接中断请求
LAST_ACK    #等待原来的发向远程 TCP 的连接中断请求的确认
LISTEN      #监听来自 Server 的 TCP 端口的连接请求
SYN_RECV    #再收到和发送一个连接请求后等待对方对连接请求的确认,连接请求已经到达,等待确认
SYN-SENT    #再发送连接请求后等待匹配的连接请求
SYN-RECEIVED    #再收到和发送一个连接请求后等待对方对连接请求的确认
  • 在高并发的场景下,TIME_WAIT 连接存在,属于正常现象

超量的 TIME_WAIT 会发生以下报错:

每一个 TIME_WAIT 状态,都会占用一个「本地端口」,上限为 65535(16 bit,2 Byte)
当大量的连接处于 TIME_WAIT 时,新建立 TCP 连接会出错,address already in use : connect 异常

  • 可以调整 Linux 内核参数来减少 TIME_WAIT
$ vim /etc/sysctl.conf
net.ipv4.tcp_syncookies = 1
#表示开启 SYN cookies。当出现 SYN 等待队列溢出时,启用 cookies 来处理,可防范少量 SYN 攻击,默认为 0,表示关闭
net.ipv4.tcp_tw_reuse = 1
#表示开启重用。允许将 TIME-WAIT sockets 重新用于新的 TCP 连接,默认为 0,表示关闭
net.ipv4.tcp_tw_recycle = 1
#表示开启 TCP 连接中 TIME-WAIT sockets 的快速回收,默认为 0,表示关闭
net.ipv4.tcp_fin_timeout = 30
#修改系統默认的TIMEOUT时间
$ sysctl -p
#立刻生效
  • 可以调整 Linux 内核参数来减少 CLOSE_WAIT
$ vim /etc/sysctl.conf
net.ipv4.tcp_keepalive_time = 1800 
net.ipv4.tcp_keepalive_probes = 3 
net.ipv4.tcp_keepalive_intvl = 15

2.查看端口目前所连接的客户端IP

$ netstat -atlnp | grep 443 | awk '{print $5}' | grep -o -E  '.*:' | awk -F ':' '{print $1}' | grep -v 0.0.0.0 | sort
#这里使用的是 443 端口

3.查看端口 443process 进程数

$ netstat -pan | grep 443  |wc -l

4.查询来自某台服务器 10.10.10.100 的连接 process 进程数

$ netstat -pan | grep 10.10.10.100 | wc -l

5.输出本机 IP

$ ifconfig eth0 |grep "inet " |awk '{print $2}'| cut -c 1-
eth0 为网卡名称,inet 是 IPv4 地址,如果需要 IPv6,就修改为 inet6。环境系统不一样命令可能需要小变动,也有很多种方法获取到

Over ~

版权协议须知!

本篇文章来源于 Uambiguous ,如本文章侵犯到任何版权问题,请立即告知本站,本站将及时予与删除并致以最深的歉意

906 0 2020-11-17


分享:
icon_mrgreen.gificon_neutral.gificon_twisted.gificon_arrow.gificon_eek.gificon_smile.gificon_confused.gificon_cool.gificon_evil.gificon_biggrin.gificon_idea.gificon_redface.gificon_razz.gificon_rolleyes.gificon_wink.gificon_cry.gificon_surprised.gificon_lol.gificon_mad.gificon_sad.gificon_exclaim.gificon_question.gif
博主卡片
林里克斯 博主大人
一个致力于Linux的运维平台
运维时间
搭建这个平台,只为分享及记载自己所遇之事和难题。

现在时间 2024-04-28

今日天气
站点统计
  • 文章总数:240篇
  • 分类总数:29个
  • 评论总数:10条
  • 本站总访问量 216747 次

@奥奥

@Wong arrhenius 牛比

@MakerFace 厉害了!