Windows如何查看所有打开的端口?

在Windows操作系统中,查看打开端口是网络管理、故障排查和安全监控的常见需求,通过命令行工具可以高效获取端口监听状态、进程关联信息等关键数据,以下是Windows系统中查看打开端口的详细命令及使用方法,涵盖基础到高级的应用场景。

windows 查看打开端口命令
(图片来源网络,侵删)

基础端口查看命令

netstat命令

netstat是Windows内置的经典网络状态工具,功能全面且无需额外安装,其常用参数组合如下:

  • netstat -ano:显示所有端口(-a),以数字形式表示地址和端口(-n),显示进程ID(-o),这是最常用的端口查看命令,输出结果包含本地地址、外部地址、状态和PID。

    TCP    0.0.0.0:80           0.0.0.0:0              LISTENING       4
    TCP    [::]:443             [::]:0                 LISTENING       1234

    其中LISTENING表示端口处于监听状态,PID对应进程标识符。

  • netstat -ano | findstr "端口号":筛选特定端口信息,例如查找80端口:netstat -ano | findstr "80",可快速定位端口是否被占用及关联PID。

    windows 查看打开端口命令
    (图片来源网络,侵删)
  • netstat -anb(需管理员权限):直接显示进程名(-b),无需通过PID查询进程,但可能因安全策略受限。

Get-NetTCPConnection(PowerShell命令)

在Windows 10/11及Server 2016+系统中,PowerShell提供了更现代化的网络连接管理命令:

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

此命令可筛选监听状态(-State Listen)的连接,并显示本地地址、端口、状态和进程ID,结合Get-Process可进一步获取进程名,

Get-NetTCPConnection -State Listen | Where-Object {$_.LocalPort -eq 80} | Select-Object @{Name="ProcessName";Expression={(Get-Process -Id $_.OwningProcess).ProcessName}}

端口状态详解

端口状态是判断网络服务是否正常的关键指标,常见状态包括:

windows 查看打开端口命令
(图片来源网络,侵删)
  • LISTENING:端口处于监听状态,等待连接请求(如Web服务器的80/443端口)。
  • ESTABLISHED:连接已建立,数据传输中(如浏览器与服务器之间的通信)。
  • TIME_WAIT:连接即将关闭,等待剩余数据包处理。
  • CLOSED:端口未使用或连接已终止。

进程与端口的关联分析

通过PID查找进程

使用netstat获取PID后,可通过任务管理器或命令行定位进程:

  • 任务管理器:按Ctrl+Shift+Esc,切换到“详细信息”选项卡,勾选“PID”列,对比查找。
  • 命令行tasklist | findstr "PID",例如tasklist | findstr "4"显示PID为4的进程(通常为系统进程)。

安全注意事项

若发现未知进程占用端口,需警惕恶意软件,可通过以下步骤排查:

  • 使用Get-Process -Id PID | Select-Object Path查看进程路径。
  • 通过杀毒软件扫描进程文件。

高级端口管理命令

netsh命令

netsh可管理端口规则和防火墙设置,例如查看防火墙例外端口:

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

PortQry工具

微软官方工具PortQry(需单独下载)可测试端口连通性,

portqry -n localhost -e 80

输出端口是否开放及监听状态。

常见端口占用场景与解决方案

场景可能原因解决方案
端口80被占用IIS、Apache或其他Web服务停止无关服务或修改端口配置
端口被PID=4占用系统进程(如svchost)检查系统服务依赖关系
动态端口范围冲突应用程序临时端口耗尽调整注册表MaxUserPort

自动化脚本示例

批量监听端口状态的PowerShell脚本:

$ports = 80, 443, 3389
foreach ($port in $ports) {
    $connection = Get-NetTCPConnection -LocalPort $port -ErrorAction SilentlyContinue
    if ($connection) {
        $process = Get-Process -Id $connection.OwningProcess
        Write-Output "端口 $port: $($process.ProcessName) (PID: $($process.Id))"
    } else {
        Write-Output "端口 $port: 未监听"
    }
}

相关问答FAQs

问题1:如何区分端口是本地服务还是远程连接?
答:通过netstat -ano中的“外部地址”列判断,若显示0.0.0:0[::]:0,表示端口监听所有接口(本地或远程均可访问);若显示具体IP地址(如168.1.100:54321),则表示与特定远程设备的连接已建立。

问题2:为什么netstat -ano显示的PID无法在任务管理器中找到?
答:可能原因包括:① 进程已终止但端口仍处于TIME_WAIT状态;② PID为0的系统内核线程;③ 权限不足(需以管理员身份运行命令),可通过wmic process where "ProcessId=PID" call terminate强制结束进程(谨慎使用)。

文章来源网络,作者:运维,如若转载,请注明出处:https://shuyeidc.com/wp/440663.html<

(0)
运维的头像运维
上一篇2025-11-02 08:43
下一篇 2025-11-02 08:47

相关推荐

  • Linux设置网络命令有哪些常用?

    Linux作为开源操作系统,其网络配置命令丰富且灵活,掌握这些命令对于系统管理员和开发者至关重要,以下将详细介绍Linux中常用的网络设置命令,包括查看网络状态、配置IP地址、路由管理、DNS配置以及网络服务控制等内容,并通过表格形式对比部分命令的用法,最后附上相关FAQs,在Linux中,查看网络状态是基础操……

    2025-11-18
    0
  • 如何用cmd命令查看路由表?

    在Windows操作系统中,命令提示符(CMD)是一个强大的工具,它允许用户通过输入特定的命令来执行各种网络管理任务,其中查看和诊断路由信息是常见需求,路由决定了网络数据包从源头到目的地的传输路径,理解当前系统的路由表有助于排查网络连接问题、优化网络配置或实现特定的网络策略,本文将详细介绍如何使用CMD命令查看……

    2025-11-18
    0
  • 如何查询445端口开放状态?

    在网络安全管理和系统运维中,445端口是一个需要重点关注的目标端口,因为它与SMB(Server Message Block)协议紧密相关,常被用于Windows系统之间的文件共享和打印机共享,由于该协议的历史漏洞(如永恒之蓝漏洞),445端口也成为恶意软件传播和网络攻击的主要入口之一,掌握445端口的查询方法……

    2025-11-17
    0
  • adb 如何查看端口占用与进程信息?

    在Android开发和系统调试过程中,adb(Android Debug Bridge)作为核心工具,提供了丰富的命令来管理设备、调试应用及监控系统状态,查看端口占用情况是排查网络问题、服务冲突或调试应用通信的关键操作,本文将详细解析adb查看端口的相关命令,包括基础用法、进阶技巧及实际应用场景,并辅以表格对比……

    2025-11-17
    0
  • Java如何调用MySQL命令?

    Java调用MySQL命令是Java应用程序与MySQL数据库交互的核心操作,主要通过JDBC(Java Database Connectivity)实现,JDBC是Java提供的一套标准API,用于执行SQL语句、处理结果集以及管理数据库连接,以下是详细的实现步骤和注意事项,环境准备在开始之前,需确保以下环境……

    2025-11-17
    0

发表回复

您的邮箱地址不会被公开。必填项已用 * 标注