netstat 功能说明:显示本机网络的连接状态、运行端口和路由表等信息。 参数选项 -r 显示路由表信息,该功能类似于 route 和ip route -g 显示多播功能群组成员,该功能类似于 ip maddr -i 显示网络接口信息,该功能类似于 ip -s link -s 显示各类协议的统计信息 -n 显示数字形式的地址而不是去解析主机、端口或用户名。默认情况下,netstat命令会尝试解析并显示主机的主机名,这个过程通常比较长也是非必需的 -a 显示处于监听状态和非监听状态的socket信息 -A 显示指定网络类型的网络连接状态 -c <秒数> 后面跟的秒数表示每隔几秒就刷新显示一次 -l 仅显示连接状态为“LISTEN”的服务的网络状态 -t 显示所有的TCP连接情况 -u 显示所有的UDP连接情况 -p 显示socket所属进程的PID和名称 范例: 常用选项组合(一) [root@cs6 ~]# netstat -an Active Internet connections (servers and established) Proto Recv-Q Send-Q Local Address Foreign Address State tcp 0 0 0.0.0.0:22 0.0.0.0:* LISTEN tcp 0 0 127.0.0.1:25 0.0.0.0:* LISTEN tcp 0 64 10.0.0.100:22 10.0.0.1:2827 ESTABLISHED tcp 0 0 10.0.0.100:22 10.0.0.1:6358 ESTABLISHED tcp 0 0 :::22 :::* LISTEN tcp 0 0 ::1:25 :::* LISTEN Active UNIX domain sockets (servers and established) Proto RefCnt Flags Type State I-Node Path unix 8 [ ] DGRAM 12335 /dev/log unix 2 [ ACC ] STREAM LISTENING 12689 public/cleanup unix 2 [ ACC ] STREAM LISTENING 12697 private/tlsmgr unix 2 [ ACC ] STREAM LISTENING 12702 private/rewrite unix 2 [ ACC ] STREAM LISTENING 12706 private/bounce unix 2 [ ACC ] STREAM LISTENING 12710 private/defer unix 2 [ ACC ] STREAM LISTENING 12714 private/trace unix 2 [ ACC ] STREAM LISTENING 12718 private/verify unix 2 [ ACC ] STREAM LISTENING 12722 public/flush unix 2 [ ACC ] STREAM LISTENING 12726 private/proxymap 针对该命令的第一行内容进行了说明。 第一行活动网络连接说明 第一列 Proto socket使用的协议(TCP、UDP、RAW) 第二列 Recv-Q 接收到但是还未处理的字节数 第三列 Send-Q 已经发送但是未被远程主机确认收到的字节数 第四列 Local Address 本地主机地址和端口 第五列 Foreign Address 远程主机地址和端口 第六列 State socket的状态,通常仅仅有TCP的状态,状态值可有ESTABLISHED、SYN_SENT、SYN_RECV、FIN_WAIT1、FIN_WAIT2、TIME_WAIT等 第6列 State状态信息详解 ESTABLISHED socket已经建立连接,表示处于连接的状态,一般认为有一个ESTABLISHED 是一个服务的并发连接。 该连接状态在生产场景中很重要,需要重点关注 SYN_SENT socket正在积极尝试建立一个连接,即处于发送后连接前的一个等待但未匹配进入连接的状态 SYN_RECV 已经从网络上收到一个连接请求 FIN_WAIT1 socket已关闭,连接正在或正要关闭 FIN_WAIT2 连接已关闭,并且socket正在等待远端结束 TIME_WAIT socket正在等待关闭处理仍在网络上的教据包,这个连接状态在生产场景中很重要,需要重点关注 CLOSED socket不再被占用了 CLOSE_WAIT 远端已经结束,等待socket关闭 LAST_ACK 远端已经结束,并且socket也已关闭,等待acknowledgement LISTEN socket正在监听连接请求 CLOSING socket关闭,但是我们仍旧没有发送数据 UNKNOWN socket状态未知 范例: 常用选项组合(二) [root@cs6 ~]# netstat -lntup Active Internet connections (only servers) Proto Recv-Q Send-Q Local Address Foreign Address State PID/Program name tcp 0 0 0.0.0.0:22 0.0.0.0:* LISTEN 1358/sshd tcp 0 0 127.0.0.1:25 0.0.0.0:* LISTEN 1437/master tcp 0 0 :::22 :::* LISTEN 1358/sshd tcp 0 0 ::1:25 :::* LISTEN 1437/master 以上命令语句的作用为显示所有TCP和UDP正在监听的连接信息。 -l:显示所有LISTEN状态的网络连接。 -n:显示IP地址,不进行DNS解析成主机名、域名。 -t:显示所有TCP连接。 -u:显示所有UDP连接。 -p:显示进程号和进程名。 范例: 显示当前系统的路由表 [root@cs6 ~]# netstat -rn Kernel IP routing table Destination Gateway Genmask Flags MSS Window irtt Iface 10.0.0.0 0.0.0.0 255.255.255.0 U 0 0 0 eth0 172.16.1.0 0.0.0.0 255.255.255.0 U 0 0 0 eth1 10.1.0.0 10.0.0.253 255.255.255.0 UG 0 0 0 eth0 169.254.0.0 0.0.0.0 255.255.0.0 U 0 0 0 eth0 0.0.0.0 10.0.0.2 0.0.0.0 UG 0 0 0 eth0 范例: 选项-i显示网络的接口状况。 [root@cs6 ~]# netstat -i Kernel Interface table Iface MTU Met RX-OK RX-ERR RX-DRP RX-OVR TX-OK TX-ERR TX-DRP TX-OVR Flg eth0 1500 0 5405 0 0 0 3518 0 0 0 BMRU eth1 1500 0 0 0 0 0 18 0 0 0 BMRU lo 65536 0 0 0 0 0 0 0 0 0 LRU 以下是命令结果解释。 lface:表示网络设备的接口名称。 MTU:表示最大传输单元,单位为字节。 RX-OK/TX-OK:表示已经准确无误地接收/发送了多少数据包。 RX-ERR/TX-ERR:表示接收/发送数据包时产生了多少错误。 RX-DRP/TX-DRP:表示接收/发送数据包时丢弃了多少数据包。 RX-OVR/TX-OVR:表示由于误差而遗失了多少数据包。 Flg:表示接口标记,其中各标记含义具体如下。 L:表示该接口是个回环设备。 B:表示设置了广播地址。 M:表示接收所有数据包。 R:表示接口正在运行。 U:表示接口处于活动状态。 o:表示在该接口上禁用arp。 P:表示一个点到点的连接。 正常情况下,RX-ERR/TX-ERR、RX-DRP/TX-DRP和RX-OVR/TX-OVR的值都应该为0,如果这几个选项的值不为0,并且很大,那么网络质量肯定有问题,网络传输性能也一定会下降。 范例: 统计各个状态的网络连接个数 [root@bzhl ~]# netstat -n|awk '/^tcp/ {++lewen[$NF]} END {for (a in lewen) print a ,lewen[a]}' ESTABLISHED 5 TIME_WAIT 1