Windows 2026 中检查开放端口的完整指南

使用netstat命令和PowerShell检查Windows开放端口的指南

在 Windows 上检查开放端口是每个具有网络意识的用户都应该掌握的技能。开放端口意味着你的计算机正在主动监听该端口号上的连接,了解哪些端口是开放的可以帮助你发现安全漏洞、排查连接问题,并验证应用程序是否正常运行。Windows 提供了多种内置方法来完成此操作,此外还有外部工具可以测试你的端口从外部看起来如何。

什么是开放端口以及为什么它们很重要

计算机上的每个网络服务都绑定到 1 到 65535 之间的端口号。当服务正在运行并等待传入连接时,该端口是"开放的"。当没有任何东西在监听时,端口是"关闭的",传入的连接尝试会被拒绝或忽略。

以下是为什么这在实践中很重要:

  • 安全审计: 意外的开放端口可能意味着恶意进程、恶意软件或配置错误的服务正在暴露你的计算机。
  • 故障排查: 如果你的网络服务器、游戏服务器或远程桌面无法访问,首先要问的是该端口是否真的是开放的。
  • 防火墙验证: 你的 Windows 防火墙可能会阻止一个端口,即使该服务正在运行,或允许一个你认为已关闭的端口。
提示: "开放"和"未被防火墙阻止"是两回事。一个端口可以在本地是开放的(一个服务正在监听),但仍然可能被你的防火墙或路由器在外部阻止。下面的方法涵盖了两个方面。

使用 Netstat 命令查看开放端口

netstat netstat 命令是列出 Windows 计算机当前正在监听的每个端口的最快内置方法。打开命令提示符(在开始菜单中搜索"cmd",右键单击,然后选择"以管理员身份运行")并运行:

netstat -ano

标志的含义如下:

  • -a 显示所有活动连接和监听端口。
  • -n 以数字形式显示地址和端口号,而不是解析主机名(速度更快)。
  • -o 添加进程 ID(PID),以便你可以识别哪个程序拥有每个端口。

输出列为: Proto Local Address Foreign Address State PID 。查找 State 列显示 LISTENING 的行。这些就是你的开放端口。

要仅缩小到监听端口:

netstat -ano | findstr LISTENING

一旦你有了想要调查的 PID,可以使用以下命令查找进程名称:

tasklist /fi "PID eq 1234"

1234 替换为 netstat 输出中的实际 PID。这会告诉你确切是哪个可执行文件正在监听该端口。

要检查特定端口是否被使用,请将 netstat 与 findstr 结合:

netstat -ano | findstr :443
注意: Netstat 仅显示在本地计算机上有活动绑定的 TCP 和 UDP 端口。它不会告诉你这些端口是否可以从互联网访问。为此,你需要一个外部端口检查器(下面会介绍)。

使用 PowerShell 检查端口

PowerShell 提供了一个比 netstat 更清晰、更可脚本化的替代方案。以管理员身份打开 PowerShell 并运行:

Get-NetTCPConnection -State Listen | Select-Object LocalAddress, LocalPort, OwningProcess | Sort-Object LocalPort

这会返回一个已排序的列表,包含所有处于 LISTEN 状态的 TCP 端口,包括本地地址和 PID。要在同一命令中将 PID 解析为进程名称:

Get-NetTCPConnection -State Listen |
  Select-Object LocalPort,
    @{Name="Process";Expression={(Get-Process -Id $_.OwningProcess -ErrorAction SilentlyContinue).Name}} |
  Sort-Object LocalPort

你也可以直接从 PowerShell 使用 Test-NetConnection 测试远程主机上的特定端口是否开放:

Test-NetConnection -ComputerName example.com -Port 443

如果 TcpTestSucceeded : True 出现在输出中,说明端口是开放的并正在接受来自你的计算机的连接。这对于验证从 Windows PC 到服务器的出站连接很方便,而不仅仅是检查本地开放了什么。

检查 Windows 防火墙设置中的端口规则

Windows 防火墙控制允许进出的端口。一个服务可能在本地监听某个端口,但如果防火墙阻止该端口上的入站流量,外部客户端就无法访问它。以下是如何查看你的防火墙规则。

使用 Windows Defender 防火墙和高级安全

  1. Win + R ,输入 wf.msc 并按 Enter。
  2. 点击 入站规则 左侧面板中的,查看控制进入你的计算机的流量的规则。
  3. 点击 出站规则 查看离开你的计算机的流量。
  4. 启用 排序,快速查看哪些规则处于活动状态。
  5. 每条规则显示协议(TCP/UDP)、本地端口、远程端口和操作(允许/阻止)。

使用命令行

要从命令行列出所有活动的防火墙规则:

netsh advfirewall firewall show rule name=all

要检查特定端口是否通过防火墙允许:

netsh advfirewall firewall show rule name=all | findstr "LocalPort"

Microsoft 关于 配置 Windows 防火墙 的官方文档涵盖了规则创建和管理的详细内容,如果你需要添加或修改规则。

在 Windows 上使用端口扫描器

内置工具非常适合检查你自己的计算机,但有时你需要扫描网络上的另一台主机,或者你想要一个可视化的概览而不是原始的命令行输出。专用的端口扫描器可以填补这个空白。

Nmap 是端口扫描的行业标准。它是免费的、开源的,可以从 官方 Nmap 下载页面 获取 Windows 版本。Windows 安装程序包括 Zenmap,一个图形化前端。基本的主机扫描如下所示:

nmap -sV 192.168.1.1

-sV -sV 标志尝试检测在每个开放端口上运行的服务版本。这对于 Windows 上的网络安全审计很有用,因为你可以看到不仅哪些端口是开放的,还可以看到它们后面运行的软件。

重要: 仅扫描你拥有或明确获得许可的主机。扫描你不控制的网络上的端口可能会违反 《计算机欺诈和滥用法》(CFAA) 或你所在国家的等效法律。

从外部测试你的开放端口

这是大多数指南忽略的关键区别:一个端口可能在你的 Windows 计算机上本地监听,但对外部世界仍然显示为关闭。当你的路由器没有转发该端口或你的 ISP 阻止它时,就会发生这种情况。要了解互联网实际看到的内容,你需要从外部角度进行测试。

这正是在线端口检查器所做的。它从远程服务器启动到你的 IP 地址的 TCP 连接,并报告连接是否被接受(开放)、被拒绝(关闭)或超时。无需安装软件,它完全绕过你的本地防火墙,显示真实的外部视图。

在线端口检查器工具测试 Windows 上的开放端口

查看 Windows 计算机上的确切开放端口

我们的免费在线端口检查器从外部服务器测试到任何 IP 或域的 TCP 连接,因此在检查 Windows 上的开放端口时,你可以获得真实的外部视图。检查单个端口或一次批量检查最多 10 个,毫秒级的结果。

检查你的开放端口 →

常见端口快速参考

了解哪些服务使用哪些端口可以在故障排查时节省时间。以下是你在 Windows 系统上最常遇到的端口:

端口 协议 服务 在 Windows 上的常见用途
80 TCP HTTP 网络服务器(IIS、Apache)、本地开发服务器
443 TCP HTTPS 安全网络服务器、Windows 更新
3389 TCP RDP 远程桌面协议、远程管理
445 TCP SMB 文件共享、Windows 网络共享
22 TCP SSH OpenSSH(内置于 Windows 10/11)
21 TCP FTP 文件传输、IIS FTP 服务
25 TCP SMTP 电子邮件发送、邮件服务器中继
3306 TCP MySQL MySQL/MariaDB 数据库连接
5432 TCP PostgreSQL PostgreSQL 数据库连接
135 TCP RPC Windows 远程过程调用、DCOM
端口 3389(RDP)是互联网上被最频繁暴力破解的端口之一。如果你将 RDP 开放给公共互联网,考虑将其移到非标准端口或在防火墙规则中按 IP 地址限制访问。

关闭你不需要的端口

良好的 Windows 端口监控不仅仅是找出什么是开放的。它是关于决定什么应该是开放的,并关闭其他所有东西。以下是一个实用的方法:

  1. 运行 netstat -ano 并列出所有 LISTENING 端口。 使用前面展示的 tasklist 命令将每个 PID 映射到进程名称。
  2. 识别你不需要的服务。 例如,如果你没有使用 IIS,就没有理由让端口 80 或 443 在本地开放。通过 services.msc 停止服务。
  3. 查看 Windows 防火墙入站规则。 打开 wf.msc 并禁用任何允许流量到你已识别为不必要的端口的规则。
  4. 检查你的路由器。 路由器上的端口转发规则可以暴露端口,即使 Windows 防火墙在操作系统级别阻止它们。登录你的路由器管理面板并审计转发的端口。
  5. 从外部重新测试。 进行更改后,再次运行外部端口检查,确认这些端口不再可访问。

CISA 网络安全公告 定期发布关于在野外被利用的特定端口的警报。如果你管理 Windows 服务器,定期检查该列表是一个好习惯。

本地开放端口意味着你的 Windows 计算机上的服务正在主动监听该端口号上的连接。外部开放端口意味着互联网上的外部计算机实际上可以访问它。你的路由器、ISP 或 Windows 防火墙可以阻止外部访问,即使端口在本地监听。始终从外部工具测试以确认真实世界的状态。

这几乎总是由以下三个原因之一造成的:Windows 防火墙有入站规则阻止该端口,你的路由器没有该端口的端口转发规则,或你的 ISP 在网络级别阻止该端口。按顺序检查每一层。常见的 ISP 阻止端口包括 25(SMTP)、80 和 443 在住宅连接上。

将 RDP 直接暴露给互联网是一个重大的安全风险。自动机器人持续扫描开放的端口 3389 并尝试暴力破解登录。如果你需要远程访问,首先使用 VPN 访问你的网络,在 Windows 防火墙中限制 RDP 访问到特定 IP 地址,或使用非标准端口加上强密码和网络级身份验证(NLA)。

使用 -a 标志时,Netstat 确实会显示 UDP 端口。在 Proto 列中查找标记为 UDP 的行。但是,UDP 没有像 TCP 那样的连接握手,所以远程测试要困难得多。大多数在线端口检查器,包括基于 TCP 的工具,仅测试 TCP 连接。对于 UDP 扫描,带有 -sU 标志的 Nmap 是实用选项,尽管它需要管理员权限。

打开 wf.msc ,点击"入站规则",然后点击右侧的"新规则"。选择"端口",选择 TCP 或 UDP,输入端口号,选择"允许连接",将其应用到适当的配置文件(域、专用、公共),并为规则命名。对于命令行爱好者,使用: netsh advfirewall firewall add rule name="MyPort" dir=in action=allow protocol=TCP localport=8080

超时意味着端口检查器发送了 TCP 连接请求,但在等待期间(通常是几秒钟)没有收到响应。这通常意味着防火墙默认丢弃数据包而不是主动拒绝它们。"关闭"结果意味着主机发送回 TCP 重置,主动拒绝连接。超时在丢弃而不是拒绝流量的严格防火墙配置中更常见。