说明
netstat命令用于显示本机网络的连接状态、运行端口和路由表信息
格式
netstat [option]
常用参数
- -a或—all:显示所有连线中的Socket,监听状态和非监听状态的socket信息
- -A<网络类型>或—<网络类型>:列出该网络类型连线中的相关地址;
- -c或—continuous:持续列出网络状态,后面跟秒数表示每隔几秒就刷新显示一次
- -g或—groups:显示多重广播功能群组组员名单;
- -h或—help:在线帮助;
- -i或—interfaces:显示网络接口信息,该功能类似于前面的ip -s link
- -l或—listening:显示监控中的服务器的Socket;
- -n或—numeric:直接使用ip地址,而不通过域名服务器;
- -p或—programs:显示正在使用Socket的程序识别码PID和程序名称;
- -r或—route:显示Routing Table;
- -s或—statistice:显示网络工作信息统计表;
- -t或—tcp:显示TCP传输协议的连线状况;
- -u或—udp:显示UDP传输协议的连线状况;
示例
1、常用选项组合一(-an)
[root@localhost ~]# netstat -an
Active Internet connections (servers and established)
Proto Recv-Q Send-Q Local Address Foreign Address State
tcp 0 0 127.0.0.1:9000 0.0.0.0:* LISTEN
tcp 0 0 0.0.0.0:27017 0.0.0.0:* LISTEN
tcp 0 0 0.0.0.0:80 0.0.0.0:* LISTEN
tcp 0 0 0.0.0.0:22 0.0.0.0:* LISTEN
tcp 0 0 192.168.71.108:22 192.168.71.1:51578 ESTABLISHED
tcp 0 52 192.168.71.108:22 192.168.71.1:57791 ESTABLISHED
tcp6 0 0 :::3306 :::* LISTEN
tcp6 0 0 :::22 :::* LISTEN
udp 0 0 0.0.0.0:35416 0.0.0.0:*
udp 0 0 0.0.0.0:5353 0.0.0.0:*
raw6 0 0 :::58 :::* 7
Active UNIX domain sockets (servers and established)
Proto RefCnt Flags Type State I-Node Path
unix 2 [ ACC ] STREAM LISTENING 15623 /var/run/NetworkManager/private
unix 2 [ ACC ] SEQPACKET LISTENING 12872 /run/udev/control
unix 2 [ ] DGRAM 7512 /run/systemd/notify
unix 2 [ ] DGRAM 7514 /run/systemd/cgroups-agent
...
第一行活动网络连接说明:
列数 | 名称 | 含义 |
---|---|---|
第1列 | Proto | socket使用协议(TCP、UDP、RAW) |
第2列 | Recv-Q | 接收到但是还未处理的字节数 |
第3列 | Send-Q | 已经发送但是未被远程主机确认收到的字节数 |
第4列 | Local Address | 本地主机地址和端口 |
第5列 | Foreign Address | 远程主机地址和端口 |
第6列 | State | socket的状态,通常仅仅有TCP的状态,状态值可能有LISTEN、ESTABLISHED、SYN_SEND、SYN_RECV、FIN_WAIT1、FIN_WAIT2、FIN_WAIT等 |
State状态信息:
- CLOSED:初始(无连接)状态。
- LISTEN:侦听状态,等待远程机器的连接请求。
- SYN_SEND:在TCP三次握手期间,主动连接端发送了SYN包后,进入SYN_SEND状态,等待对方的ACK包。
- SYN_RECV:在TCP三次握手期间,主动连接端收到SYN包后,进入SYN_RECV状态。
- ESTABLISHED:完成TCP三次握手后,主动连接端进入ESTABLISHED状态。此时,TCP连接已经建立,可以进行通信。
- FIN_WAIT_1:在TCP四次挥手时,主动关闭端发送FIN包后,进入FIN_WAIT_1状态。
- FIN_WAIT_2:在TCP四次挥手时,主动关闭端收到ACK包后,进入FIN_WAIT_2状态。
- TIME_WAIT:在TCP四次挥手时,主动关闭端发送了ACK包之后,进入TIME_WAIT状态,等待最多MSL时间,让被动关闭端收到ACK包。
- CLOSING:在TCP四次挥手期间,主动关闭端发送了FIN包后,没有收到对应的ACK包,却收到对方的FIN包,此时,进入CLOSING状态。
- CLOSE_WAIT:在TCP四次挥手期间,被动关闭端收到FIN包后,进入CLOSE_WAIT状态。
- LAST_ACK:在TCP四次挥手时,被动关闭端发送FIN包后,进入LAST_ACK状态,等待对方的ACK包。
2、常用组合二(-lntup)
[root@localhost ~]# netstat -lntup
Active Internet connections (only servers)
Proto Recv-Q Send-Q Local Address Foreign Address State PID/Program name
tcp 0 0 127.0.0.1:9000 0.0.0.0:* LISTEN 1449/php-fpm: maste
tcp 0 0 0.0.0.0:27017 0.0.0.0:* LISTEN 1736/mongod
tcp 0 0 0.0.0.0:80 0.0.0.0:* LISTEN 1199/nginx: master
tcp 0 0 0.0.0.0:22 0.0.0.0:* LISTEN 1114/sshd
tcp6 0 0 :::3306 :::* LISTEN 3598/mysqld
tcp6 0 0 :::22 :::* LISTEN 1114/sshd
udp 0 0 0.0.0.0:35416 0.0.0.0:* 863/avahi-daemon: r
udp 0 0 0.0.0.0:5353 0.0.0.0:* 863/avahi-daemon: r
显示所有TCP和UDP正在监听的连接信息:
- -l:显示所有LINTEN状态的网络连接
- -n:显示IP地址,不进行DNS解析成主机名、域名
- -t:显示所有tcp连接
- -u:显示所有udp连接
- -p:显示进程号和进程名
3、统计当前系统的路由表
[root@localhost ~]# netstat -rn
Kernel IP routing table
Destination Gateway Genmask Flags MSS Window irtt Iface
0.0.0.0 192.168.71.2 0.0.0.0 UG 0 0 0 eno16777736
192.168.71.0 0.0.0.0 255.255.255.0 U 0 0 0 eno16777736
4、统计各个状态的网络连接数
[root@localhost ~]# netstat -an|awk '/^tcp/ {++count[$NF]} END {for(a in count) print a,count[a]}'
LISTEN 6
ESTABLISHED 1
[root@localhost ~]# netstat -n|awk '/^tcp/ {++count[$NF]} END {for(a in count) print a,count[a]}'
LISTEN 6
ESTABLISHED 1