如果你想给某个程序单独分配一个端口,那先搞清楚「这个 TCP 或 UDP 端口被谁监听」就很有必要。举个例子:你想改 MySQL 的默认监听端口,那第一步就得确认准备用的那个端口没被别的进程占着。反过来,如果你只是想知道当前哪个活动进程占用了哪个 TCP/UDP 端口,这篇教程也能帮你排查网络问题、发现潜在安全隐患、优化系统性能。
方法一:用命令提示符和 netstat
想揭开 Windows 里「端口号背后是谁」,最省事的第一招就是 netstat 命令。它是个命令行工具,用来显示网络协议统计信息。用法如下。
- 先打开命令提示符:
在 Windows 开始菜单里搜 CMD,或者按 Win + X 后选「终端」。
- 运行 netstat:
在命令提示符里执行下面这条命令,列出所有活动连接和监听端口:
```Bash/Shell netstat -ano
- **找出对应进程:**
列表里会显示本地地址(Local Address)以及它用的端口号。想知道哪个进程占了哪个端口,记下「PID」那一列对应的进程标识符(PID)即可。

- **用 PID 反查进程或应用:**
拿到某个 TCP/UDP 端口对应的 PID 之后,就能顺着它找到对应是哪个应用或服务了。语法如下:
tasklist /fi "pid eq PID"
把上面命令里的 PID 换成你要查的那个。举个例:前面截图里端口 **135** 对应的 PID 是 **1632**,那么查它背后是哪个服务或进程,就写成:
```Bash/Shell
tasklist /fi "pid eq 1632"

再进一步:如果你已经知道端口号,那就不用把监听端口全列一遍,直接用下面这条命令就能查到这个端口号关联的 PID:
netstat -ano | findStr "PORT"
示例: 把 PORT 换成你想查的具体端口号:
```Bash/Shell netstat -ano | findStr "135"

- **在任务管理器里核对:**
不想碰命令行的人,也可以用任务管理器。按 **Ctrl + Shift + Esc** 打开任务管理器,切到「**详细信息**」标签,在「**搜索框**」里输入端口对应的 PID,就能揪出占着它的应用或进程。

## 方法二:用 PowerShell 的 Get-NetTCPConnection
除了命令提示符,用 PowerShell 命令同样能拿到 TCP 和 UDP 端口详情。按 **Win + X**,选「Windows PowerShell(管理员)」或「终端(管理员)」打开 PowerShell 窗口,然后运行下面的命令,查出所有 TCP 监听端口。
- **列出所有 TCP 端口和进程号**
```Bash/Shell
Get-NetTCPConnection

- 列出所有 UDP 端口、关联的本地地址、进程号等等……
```Bash/Shell Get-NetUDPEndpoint | Select-Object LocalAddress,LocalPort,RemoteAddress,RemotePort,OwningProcess

- **查某个 TCP 连接端口的具体信息**
Get-Process -Id (Get-NetTCPConnection -LocalPort YourPORT).OwningProcess
**注意:** 把 **YourPORT** 换成你要查的端口号
**示例**:
```Bash/Shell
Get-Process -Id (Get-NetTCPConnection -LocalPort 135).OwningProcess
- 查某个 UDP 端口的具体信息:
Get-Process -Id (Get-NetUDPEndpoint -LocalPort YourPORT ).OwningProcess

方法三:用资源监视器
这个方法完全不碰命令行,改用 Windows 图形化的资源监视器——它一样能显示网络相关信息,包括端口细节。操作如下。
- 打开资源监视器:
按 Win + R 调出「运行」对话框,输入「resmon」回车。

- 切到网络:
资源监视器打开后,点顶部的「网络」标签。
- 查看监听端口:
向下滚到「监听端口」区域,展开它,找到你要的端口号。这里不光有端口,还能看到 PID、占用该端口的服务,以及地址和防火墙状态等信息。

方法四:用 TCPView 图形界面工具
- 下载并运行 TCPView:
TCPView 是个小巧的绿色 Windows 程序,实时列出系统上所有 TCP 和 UDP 端点的详情——包括本地/远端地址,以及 TCP 连接状态——算是最直观的一种方式。
它可以直接从微软的 Sysinternals 网站下载,那儿专门托管各种高级系统工具。
比起 Windows 自带的 netstat 命令行工具,TCPView 能给出的信息更丰富。另外,下载下来的 TCPView 压缩包里还附带了 Tcpvcon——一个功能相同、但走命令行的版本。
- 从官方页面(链接)下载 TCPView 压缩包。
- 右键下载到的文件,解压。
- 运行 TCPView 可执行文件,就能实时看到所有打开的 TCP 和 UDP 连接。

- 用 TCPView 识别进程、TCP 和 UDP 端口:
在列表里找到目标端口号对应的进程,进程名及相关信息就会显示出来。

老版本 TCPView 还能在 Windows Server 2008、Vista、XP 上运行。 当前版本的 TCPView 已要求 Windows 8.1 及以上(含 Server 2012 R2 及以上),在老系统上请改用旧版本。
收尾!
搞清楚系统上哪些进程在监听 TCP/UDP 端口,对网络管理和排障都很有用。上面给了好几种办法:喜欢命令行就用 Netstat,想看得更直观就上 TCPView 这类专门工具,都能让你快速定位 Windows 上活动端口的详情。用哪种,完全看你自己的习惯和需求,把网络排查做得顺心就好。