Linux netstat 命令详解
netstat 是 Linux 中用于显示网络连接、路由表、接口状态等信息的命令。虽然它在现代系统中逐渐被 ss 和 ip 命令取代,但在很多环境中仍然有用。
以下是 netstat 命令的详细讲解,包括常见选项和输出解释。
一、基本语法
netstat [选项]
二、常用选项详解
| 选项 | 含义 |
|---|---|
-a |
显示所有连接和监听端口(包括 TCP 和 UDP) |
-t |
显示 TCP 连接 |
-u |
显示 UDP 连接 |
-l |
仅显示监听中的套接字(Listen) |
-n |
以数字形式显示地址和端口(不解析为主机名和服务名) |
-p |
显示哪个进程在使用该端口(需要 root 权限) |
-r |
显示路由表(类似 route -n) |
-i |
显示网络接口状态(类似 ifconfig) |
-s |
显示每个协议的统计信息 |
-c |
每隔一段时间持续输出(与 watch 类似) |
三、常见用法示例
1. 显示所有连接(包括监听)
netstat -a
2. 显示当前所有 TCP 连接
netstat -at
3. 显示所有监听的 UDP 端口
netstat -lu
4. 显示端口号和 IP 而不是主机名(加速输出)
netstat -tun
5. 查看使用端口的程序(需 root)
sudo netstat -tulpn
6. 查看路由表
netstat -rn
7. 查看网络接口统计信息
netstat -i
8. 实时查看连接状态(每秒刷新)
watch netstat -tulpn
四、输出字段解释(以 netstat -tulpn 为例)
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 1234/sshd
udp 0 0 0.0.0.0:68 0.0.0.0:* 567/dhclient
字段说明:
-
Proto:协议(tcp / udp)
-
Recv-Q:接收队列中的数据量
-
Send-Q:发送队列中的数据量
-
Local Address:本地 IP 和端口
-
Foreign Address:远程 IP 和端口(
*表示尚未建立连接) -
State:连接状态(TCP 有,UDP 没有),如:
LISTEN: 等待连接ESTABLISHED: 已建立连接TIME_WAIT: 等待足够时间以确保远程 TCP 接收最后的 ACK
-
PID/Program name:使用该端口的进程 ID 和程序名
五、替代工具推荐
-
ss:比netstat更快、功能更强(建议使用)ss -tuln ss -p -
ip:用于替代netstat -r和ifconfigip route ip addr

浙公网安备 33010602011771号