在服务器管理、网络调试以及开发测试中,快速了解服务器上哪些端口处于“监听”状态是一项基础且至关重要的技能,相比于图形界面,使用 CMD 命令行 能够更高效、更精准地获取端口信息,尤其是在远程连接或无界面的 Linux 服务器上。
本文将详细介绍如何使用 Windows 系统自带的 cmd 命令行工具来查看服务器的端口监听状态。
核心命令:Netstat
在 CMD 中,查看端口状态最常用的命令是 netstat,它的全称是“Network Statistics”(网络统计)。

基本语法
netstat [参数]
常用参数详解
为了获取最直观的监听状态,我们通常组合使用以下参数:
-a(All):显示所有连接和监听端口,这是默认行为的一部分,用于查看所有网络状态。-n(Numeric):以数字形式显示地址和端口号,这比显示主机名(如 www.google.com)更快,也更清晰。-o(Own Process):显示与每个连接关联的所属进程 ID (PID),这对于找出是哪个程序占用了端口非常有用。-t(TCP):显示 TCP 端口。-u(UDP):显示 UDP 端口。-l(Listening):仅显示处于监听状态的端口。
实战操作案例
场景 1:查看服务器所有正在监听的端口
如果你想知道服务器目前有哪些服务正在运行(Web 服务、数据库服务、远程桌面等),可以使用以下命令:
netstat -ano | findstr LISTENING
- 解析:
netstat -ano生成所有连接数据, 是管道符,将结果传递给findstr,LISTENING则是过滤出监听状态的行。
输出示例:
Proto Local Address Foreign Address State PID TCP 0.0.0.0:80 0.0.0.0:0 LISTENING 1234 TCP 0.0.0.0:3306 0.0.0.0:0 LISTENING 5678 TCP 0.0.0.0:3389 0.0.0.0:0 LISTENING 9000
Local Address:0.0.0.0:80表示 80 端口正在监听所有网络接口(即对外开放)。
场景 2:检查特定端口是否被占用
假设你要部署一个 Web 服务,需要确认 8080 端口是否空闲,或者检查 3306 端口是否已被 MySQL 占用:
netstat -ano | findstr :8080
结果分析:
- 如果没有任何输出:说明 8080 端口目前没有服务在监听,可以使用。
- 如果有输出:说明该端口已被占用。
TCP 0.0.0.0:8080 ... LISTENING,说明端口正在监听。
场景 3:查看所有 TCP 连接(包括已建立的连接)
有时候你需要排查网络故障,不仅要看监听的端口,还要看当前有多少客户端已经连接上了服务器:
netstat -ano | findstr ESTABLISHED
进阶技巧:通过端口找到对应的程序
当 netstat 显示某个端口被占用时,你可能会想知道是哪个程序占用的,这需要用到刚才提到的 -o 参数。
-
查看端口及对应的 PID:
netstat -ano | findstr :80
假设输出结果最后一列显示 PID 为
4456。 -
根据 PID 查找进程名: 在同一个 CMD 窗口中输入:
tasklist | findstr 4456
或者直接使用:
tasklist /FI "PID eq 4456"
输出示例:
Image Name PID Session Name Mem Usage ========================= ======== ================ ========== httpd.exe 4456 Services 2,400 K
这样你就知道是
httpd.exe(Apache 服务器)占用了 80 端口。
使用 cmd 命令行查看服务器端口监听状态,核心在于掌握 netstat 命令与 findstr 过滤器的配合。
- 最简指令:
netstat -ano | findstr LISTENING(查看所有监听端口) - 排查端口:
netstat -ano | findstr :端口号(查看特定端口)
熟练掌握这一技能,能帮助运维人员和开发人员迅速排查网络配置错误、防火墙拦截问题以及服务启动异常,是提升服务器管理效率的利器。
