netstat监控网络状态

基本语法

netstat [选项]

选项

选项 说明
-a 显示所有socket,包括正在监听的
-n 显示进程的IP地址和端口号,不使用域名与服务名
-p 显示程序的名字和进程的PID
-t 显示使用TCP协议端口的连接状况
-u 显示使用UDP协议端口的连接状况
-l 只显示正在网络监听的进程(默认选项)
-r 显示路由表
-c 秒数 指定每隔几秒刷新一次网络状态

一般使用 netstat -anp

举个🌰

  • 查看所有网络服务
[root@localhost ~]# netstat -anput
Active Internet connections (servers and established)
Proto Recv-Q Send-Q Local Address Foreign Address State PID/Program name
#协议 接收队列 发送队列 本机的IP 远程主机的IP 状态
# 地址及端口号 地址及端口号
tcp 0 0 127.0.0.1:19206 0.0.0.0:* LISTEN 4185/yudian_websvr
tcp 0 0 172.17.32.17:20006 0.0.0.0:* LISTEN 3399/SrvMgr
字段 说明
Proto 网络连接的协议,一般就是TCP协议或者UDP协议。
Recv-Q 表示接收到的数据,已经在本地的缓冲中,但是还没有被进程取走。
Send-Q 表示从本机发送,对方还没有收到的数据,依然在本地的缓冲中,一般是不具备ACK标志的数据包。
Local Address 本机的IP地址和端口号。
Foreign Address 远程主机的IP地址和端口号。
State 状态。常见的状态主要有以下几种。

State:

选项 说明
LISTEN 监听状态,只有TCP协议需要监听,而UDP协议不需要监听。
ESTABLISHED 已经建立连接的状态。如果使用“-l”选项,则看不到已经建立连接的状态。
SYN_SENT SYN发起包,就是主动发起连接的数据包。
SYN_RECV 接收到主动连接的数据包。
FIN_WAIT1 正在中断的连接。
FIN_WAIT2 已经中断的连接,但是正在等待对方主机进行确认。
TIME_WAIT 连接已经中断,但是套接字依然在网络中等待结束。
CLOSED 套接字没有被使用。

在这些状态中,我们最常用的就是LISTENESTABLISHED状态,一种代表正在监听,另一种代表已经建立连接。

  • 查看服务名为sshd的服务的信息
netstat -anp | grep sshd

  • 查看某进程号监听情况
netstat -anp | grep PID
  • 输出每个ip的连接数,以及总的各个状态的连接数
netstat -n | awk '/^tcp/ {n=split($(NF-1),array,":");if(n<=2)++S[array[(1)]];else++S[array[(4)]];++s[$NF];++N} END {for(a in S){printf("%-20s %sn", a, S[a]);++I}printf("%-20s %sn","TOTAL_IP",I);for(a in s) printf("%-20s %sn",a, s[a]);printf("%-20s %sn","TOTAL_LINK",N);}'
  • 查找较多time_wait连接
netstat -n|grep TIME_WAIT|awk '{print $5}'|sort|uniq -c|sort -rn|head -n20
posted @   Lz_蚂蚱  阅读(189)  评论(0编辑  收藏  举报
(评论功能已被禁用)
点击右上角即可分享
微信分享提示
评论
收藏
关注
推荐
深色
回顶
收起