Netstat 是一个用于显示网络连接、路由表、接口统计等信息的命令行工具。它在 Linux 和其他类 Unix 系统中都有提供,可以帮助我们分析和诊断网络问题。本文将介绍 Netstat 命令的基本用法和常见选项。
Netstat 命令的语法
Netstat 命令的基本语法如下:
netstat [选项] [地址族]
其中,选项可以用来指定显示的信息类型和格式,地址族可以用来过滤显示的协议类型,如 inet(IPv4)、inet6(IPv6)、unix(Unix 域套接字)等。如果不指定地址族,则默认显示所有协议类型的信息。
Netstat 命令的常见选项
Netstat 命令有很多选项,可以根据不同的需求进行组合使用。下面列举一些常见的选项及其含义:
- -a:显示所有套接字(socket),包括监听(listening)和非监听(non-listening)的。
- -l:只显示监听状态的套接字。
- -n:以数字形式显示地址和端口,不进行域名或服务名的解析。
- -p:显示每个套接字对应的进程标识符(PID)和程序名。
- -t:只显示 TCP 协议的套接字。
- -u:只显示 UDP 协议的套接字。
- -r:显示路由表(routing table)。
- -i:显示网络接口(network interface)的统计信息。
- -s:显示网络协议的统计信息。
Netstat 命令的示例
下面给出一些使用 Netstat 命令的示例,以便更好地理解其用法。
显示所有 TCP 连接
netstat -at
这个命令会显示所有 TCP 协议的套接字,包括本地地址(Local Address)、远程地址(Foreign Address)和连接状态(State)。例如:
Active Internet connections (servers and established)
Proto Recv-Q Send-Q Local Address Foreign Address State
tcp 0 0 0.0.0.0:ssh 0.0.0.0:* LISTEN
tcp 0 0 localhost:domain 0.0.0.0:* LISTEN
tcp 0 0 192.168.1.100:ssh 192.168.1.101:49210 ESTABLISHED
tcp 0 0 192.168.1.100:49212 172.217.160.78:https ESTABLISHED
其中,LISTEN 表示监听状态,ESTABLISHED 表示已建立连接,其他可能的状态还有 SYN_SENT、SYN_RECV、FIN_WAIT1、FIN_WAIT2、TIME_WAIT、CLOSE、CLOSE_WAIT、LAST_ACK、CLOSING 等。
显示所有 UDP 连接
netstat -au
这个命令会显示所有 UDP 协议的套接字,包括本地地址和远程地址。例如:
Active Internet connections (servers and established)
Proto Recv-Q Send-Q Local Address Foreign Address State
udp 0 0 0.0.0.0:bootpc 0.0.0.0:*
udp 0 0 localhost:domain 0.0.0.0:*
udp 0 0 192.168.1.100:ntp 0.0.0.0.0:*
udp 0 0 192.168.1.100:mdns 0.0.0.0:*
其中,bootpc 表示 DHCP 客户端端口,domain 表示 DNS 服务端口,ntp 表示网络时间协议(Network Time Protocol)端口,mdns 表示多播 DNS(Multicast DNS)端口。
显示所有监听套接字
netstat -l
这个命令会显示所有监听状态的套接字,包括 TCP 和 UDP 协议的。例如:
Active Internet connections (only servers)
Proto Recv-Q Send-Q Local Address Foreign Address State
tcp 0 0 0.0.0.0:ssh 0.0.0.0:* LISTEN
tcp 0 0 localhost:domain 0.0.0.0:* LISTEN
udp 0 0 0.0.0.0:bootpc 0.0.0.0:*
udp 0 0 localhost:domain 0.0.0.0:*
udp 0 0 192.168.1.100:mdns 0.0.0.0:*
显示所有套接字及其对应的进程
netstat -p
这个命令会显示所有套接字及其对应的进程标识符(PID)和程序名,如果有权限的话。例如:
Active Internet connections (w/o servers)
Proto Recv-Q Send-Q Local Address Foreign Address State PID/Program name
tcp 1 1 localhost:49214 localhost:domain CLOSE_WAIT -
tcp 1 1 localhost:49216 localhost:domain CLOSE_WAIT -
tcp 1 1 localhost:49218 localhost:domain CLOSE_WAIT -
tcp 1 1 localhost:49220 localhost:domain CLOSE_WAIT -
tcp 1 1 localhost:49222 localhost:domain CLOSE_WAIT -
tcp 1 1 localhost:49224 localhost:domain CLOSE_WAIT -
tcp 1 1 localhost:49226 localhost:domain CLOSE_WAIT -
tcp 1 1 localhost:49228 localhost:domain CLOSE_WAIT