netstat(network statistics)是 Windows 和 Linux 系统中用于显示网络连接、路由表、接口统计信息、伪装连接、多播成员等的命令行工具。它常用于排查网络问题和查看当前系统的网络状态。
一、基本语法
netstat [选项]
二、常用参数详解与完整示例说明
✅ 1. netstat —— 显示所有活动的 TCP 连接
作用:列出所有处于 Established 状态的 TCP 连接。
netstat
示例输出:
Proto Local Address Foreign Address State
TCP 192.168.1.5:50432 104.20.179.44:https ESTABLISHED
TCP 192.168.1.5:51234 142.251.42.174:https ESTABLISHED
✅ 2. netstat -a —— 显示所有连接和监听端口
作用:显示所有连接(包括监听状态)。
netstat -a
示例输出:
Proto Local Address Foreign Address State
TCP 0.0.0.0:80 0.0.0.0:0 LISTENING
TCP 192.168.1.5:50432 104.20.179.44:https ESTABLISHED
UDP 0.0.0.0:5353 *:*
✅ 3. netstat -n —— 显示数字地址和端口号(不解析为名称)
作用:加快输出速度,避免 DNS 查询。
netstat -n
示例输出:
Proto Local Address Foreign Address State
TCP 192.168.1.5:50432 142.251.42.174:443 ESTABLISHED
UDP 0.0.0.0:5353 *:*
✅ 4. netstat -s —— 按协议显示统计信息
作用:显示 TCP、UDP、ICMP 和 IP 的统计信息。
netstat -s
示例输出:
IPv4 Statistics:
Packets Received = 1234567
Received Header Errors = 0
Received Address Errors = 0
Datagrams Forwarded = 0
Unknown Protocols Received = 0
Received Packets Discarded = 123
Received Packets Delivered = 1234444
Output Requests = 987654
TCP Statistics for IPv4:
Active Opens = 1234
Passive Opens = 432
Failed Connection Attempts = 12
Reset Connections = 34
Current Connections = 5
Segments Sent = 987654
Segments Received = 1234567
Segments Retransmitted = 1234
✅ 5. netstat -e —— 显示以太网统计信息(如发送/接收的数据包数量)
netstat -e
示例输出:
Ethernet adapter 以太网:
Bytes 1234567890
Unicast packets 123456
Non-unicast packets 1234
Discards 0
Errors 0
Unknown protocols 0
✅ 6. netstat -r —— 显示路由表(Windows 中使用;Linux 中用 route print)
netstat -r
示例输出:
IPv4 Route Table
===========================================================================
Active Routes:
Network Destination Netmask Gateway Interface Metric
0.0.0.0 0.0.0.0 192.168.1.1 192.168.1.5 25
127.0.0.0 255.0.0.0 127.0.0.1 127.0.0.1 1
192.168.1.0 255.255.255.0 192.168.1.5 192.168.1.5 25
192.168.1.5 255.255.255.255 127.0.0.1 127.0.0.1 25
✅ 7. netstat -p
netstat -p tcp
示例输出:
Proto Local Address Foreign Address State
TCP 0.0.0.0:80 0.0.0.0:0 LISTENING
TCP 192.168.1.5:50432 142.251.42.174:https ESTABLISHED
✅ 8. netstat -b —— 显示每个连接关联的可执行程序(需要管理员权限)
netstat -b
示例输出:
Proto Local Address Foreign Address State PID
TCP 192.168.1.5:50432 142.251.42.174:https ESTABLISHED 1234
[chrome.exe]
✅ 9. netstat -o —— 显示与每个连接关联的进程 ID (PID)
netstat -o
示例输出:
Proto Local Address Foreign Address State PID
TCP 192.168.1.5:50432 142.251.42.174:https ESTABLISHED 1234
三、参数表格总结
参数描述示例netstat默认显示已建立的 TCP 连接netstat-a显示所有连接和监听端口netstat -a-n显示数字形式的地址和端口netstat -n-s显示各协议的统计信息netstat -s-e显示以太网统计信息(收发数据包)netstat -e-r显示路由表netstat -r-p
四、组合使用示例
示例 1:查看所有 TCP 监听端口并显示 PID
netstat -ano -p tcp | findstr "LISTENING"
输出:
TCP 0.0.0.0:80 0.0.0.0:0 LISTENING 4
TCP 0.0.0.0:443 0.0.0.0:0 LISTENING 4
可配合任务管理器查找 PID 对应的进程。
示例 2:查看某个端口被哪个程序占用(比如 8080)
netstat -ano | findstr :8080
输出:
TCP 127.0.0.1:8080 0.0.0.0:0 LISTENING 1234
然后使用:
tasklist | findstr 1234
获取该 PID 对应的程序名。
五、小贴士
Windows 下运行 netstat 需要管理员权限才能看到完整的进程信息。Linux 下 netstat 已逐渐被 ss 和 ip 命令取代,但仍然广泛使用。使用 findstr 或 grep 可以对结果进行过滤。
如需进一步帮助,例如:
如何结合 PowerShell 脚本自动分析端口占用如何在 Linux 中使用 ss 替代 netstat如何查看 UDP 多播组成员
欢迎继续提问 😊