掌握netstat:网络诊断必备命令全解析

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 —— 指定协议过滤输出(如 tcp, udp)

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 指定协议(tcp, udp, icmp 等)netstat -p tcp-b显示连接所使用的可执行文件(需管理员权限)netstat -b-o显示连接对应的进程 ID(PID)netstat -o

四、组合使用示例

示例 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 多播组成员

欢迎继续提问 😊