首页/网络/网络排障速查/netstat -ano 定位 Windows 端口占用

netstat -ano 定位 Windows 端口占用

Windows 端查端口与 PID 的主力命令:-a 全部、-n 数字、-o 显示 PID,再用 tasklist 或 Get-Process 把 PID 翻译成进程;Get-NetTCPConnection 更现代。

网络排障速查网络更新于 2026-10-13

netstat -ano 在做什么

netstat -ano 是 Windows 上查端口占用与连接状态的主力命令:-a 列出全部连接与监听、-n 用数字形式显示地址和端口(不做反向解析,快且准)、-o 在行尾附加所属进程 PID。定位占用者要两步走:先按端口筛出 PID,再用 tasklist 或 Get-Process 把 PID 翻译成进程名和可执行文件路径。PowerShell 的 Get-NetTCPConnection 输出是结构化对象,可管道筛选,更适合批量排查。

基本信息

适用平台Windows(CMD 与 PowerShell 均可用)
核心参数-a 全部、-n 数字形式、-o 显示 PID;-b 显示可执行文件(慢且需管理员)
监听状态LISTENING;已建立为 ESTABLISHED;等待回收为 TIME_WAIT
权限要求查看连接普通用户即可;结束进程需管理员权限
现代替代Get-NetTCPConnection(按端口直接过滤,输出对象)

典型使用场景

  • 应用启动报端口被占用(Windows 错误码 10048),需要找出占用进程
  • 安全巡检:核对监听端口的进程是否符合预期,发现意外暴露的服务
  • 确认服务监听地址:只绑 127.0.0.1 时外部无法访问,属常见配置问题
  • 排查连接堆积:看某个进程大量 ESTABLISHED 或 TIME_WAIT,判断是否有连接泄漏
  • 远程桌面或文件共享端口异常时,确认是服务未起还是被防火墙拦截之前的状态核对

定位占用者

定位占用者
netstat -ano | Select-String ':8080'                 # 按端口筛出相关行与 PID
netstat -ano | findstr LISTENING | findstr ':80 '    # 只看监听且端口以 80 结尾,注意空格界定
Get-NetTCPConnection -LocalPort 8080 | Select-Object LocalAddress, State, OwningProcess
Get-Process -Id 12345 | Select-Object ProcessName, Path   # PID 翻译成进程名与路径
tasklist /FI "PID eq 12345"                          # CMD 里的等价写法
netstat -ano | findstr 'TIME_WAIT' | Measure-Object -Line   # 统计 TIME-WAIT 行数

输出逐列读法

列含义判读要点
Proto协议(TCP/UDP)UDP 行没有状态列,只有本端地址与 PID
Local Address本端地址:端口0.0.0.0:80 监听全部网卡;127.0.0.1:80 仅本机可访
Foreign Address对端地址:端口监听行显示为 *:*,有远端地址的是已建立的连接
StateTCP 状态LISTENING 才是占用端口的监听方
PID进程号,位于行尾配合 tasklist /FI 或 Get-Process 翻译成进程
IPv6 会单独出现一行 [::]:80:同一服务可能同时监听 0.0.0.0 与 [::],看到两行属正常双栈监听,不是端口被两个进程占用。
处于 TIME_WAIT 的连接在 Windows 上不显示 PID:它已不归任何活跃进程所有,等待内核回收即可;只有 LISTENING 行的 PID 才值得追查。

易错点

  • findstr ':80' 不加边界:会同时命中 8080、8000 等端口,排查结论直接错位,应写成 findstr ':80 ' 或按 LISTENING 二次过滤
  • 拿到 PID 直接结束进程:很多端口由系统托管服务(svchost 承载的组件)监听,杀掉会连带影响其他服务,应先 tasklist /svc 确认承载关系
  • 只看 IPv4 行忽略 IPv6 行:某些服务只监听 [::] 并为 IPv4 提供映射,漏看会误判成「服务没起来」
  • 不区分监听与已建立:把客户端连接的远端地址当成占用者,方向完全反了

数据来源与参考

  • Microsoft Learn:netstat 命令参考
  • Microsoft Learn:Get-NetTCPConnection

相关工具

​‌‌​​‌​​​‌‌​‌‌‌‌​‌‌​​​‌‌​‌‌‌​​‌‌​​‌​‌‌‌​​‌‌‌​​​‌​‌‌​‌​​‌​‌‌‌​​​‌​‌‌​‌​​‌​‌‌​​​‌‌​‌‌‌​‌​​​‌‌​‌‌‌‌​​‌​‌‌‌​​‌‌​​​‌‌​‌‌​‌‌‌‌​‌‌​‌‌​‌