netstat 看监听与连接
netstat 是 Windows 自带的网络状态查看工具,列出本机所有监听端口、已建立的连接以及协议统计。排查「服务起没起来」「谁连着本机」「连接数是不是异常」都从它开始。实战里最常用的是 -ano 三个参数的组合:-a 显示全部连接与监听,-n 直接输出数字地址和端口不做名称反解析,-o 附带占用该连接的进程编号。输出稳定、字段固定,适合用 findstr 过滤或写进脚本采集。
基本信息
| 适用平台 | Windows CMD / PowerShell,netstat.exe 系统自带 |
|---|---|
| 语法 | netstat [-a] [-n] [-o] [-b] [-p 协议] [-r] [-e] [-s] [间隔秒数] |
| 关键参数 | -a 全部、-n 数字显示、-o 显示 PID、-b 显示可执行程序(需管理员)、-p 限定协议、-s 协议统计 |
| 常用组合 | netstat -ano 排障标准起点,输出快且含进程编号 |
| 权限 | 普通用户可查看连接;-b 显示程序名需要管理员权限 |
| 别名提示 | PowerShell 里应写 netstat.exe,直接写 netstat 会命中同名别名 |
典型使用场景
- 确认服务是否在监听:程序启动失败时先看端口有没有进入监听状态
- 排查端口冲突:多个进程争抢同一端口时比对本地地址与进程编号
- 查看谁在连接本机:按状态过滤已建立连接,判断是否有人异常访问
- 统计连接规模:连接数远超预期时判断是否存在连接泄漏或异常客户端
- 结合协议统计观察重传与错误计数(-s -p tcp)
- 排查端口耗尽类问题:观察大量处于回收状态的连接是否集中在同一进程
常用示例
常用示例
:: 全部连接与监听,数字显示并带进程编号
netstat -ano
:: 只看 80 端口相关的行
netstat -ano | findstr :80
:: 只看监听状态的行,判断服务有没有起来
netstat -ano | findstr LISTENING
:: 只看已建立的连接
netstat -ano | findstr ESTABLISHED
:: 限定协议并输出统计信息
netstat -s -p tcp
:: 只统计监听条目数量
netstat -ano | findstr LISTENING | find /c /v ""
:: 拿到 PID 后定位进程
tasklist /FI "PID eq 4321"连接状态含义
| 状态 | 含义 | 是否正常 |
|---|---|---|
| LISTENING | 本机在该端口等待连接 | 服务正常启动的标志 |
| ESTABLISHED | 双向连接已建立,数据可传输 | 数量异常增多需查来源 |
| TIME_WAIT | 本地已主动关闭,等待超时回收 | 短时间大量出现属于正常现象 |
| CLOSE_WAIT | 对端已关闭,本机程序尚未释放 | 长时间堆积说明程序没正确关闭连接 |
| SYN_SENT | 已发出握手请求等待应答 | 持续停留在该状态说明对端或链路不通 |
| FIN_WAIT_1 与 FIN_WAIT_2 | 本地发起关闭后的中间状态 | 短时出现正常,长期滞留需查程序 |
输出逐列读法
| 列 | 含义 | 异常信号 |
|---|---|---|
| 协议 | TCP 或 UDP | UDP 不显示连接状态 |
| 本地地址 | 本机地址与端口,0.0.0.0 表示监听所有网卡 | 只绑 127.0.0.1 时外部无法访问 |
| 外部地址 | 对端地址与端口 | 出现陌生公网地址需要核实 |
| 状态 | 连接所处的生命周期阶段 | 大量 CLOSE_WAIT 或 SYN_SENT 是典型异常 |
| PID | 占用该连接的进程编号 | 与任务管理器或进程查询命令比对即可定位程序 |
不加 -n 时 netstat 会对每个地址做反向解析,地址一多输出会明显变慢甚至长时间卡住,排障时养成先加 -n 的习惯。
本地地址里的 0.0.0.0 表示监听所有网卡,127.0.0.1 表示只允许本机访问。服务只监听环回地址时,本机测试能通、外部访问不通,这是很常见的误导点。
想看监听状态同时确认可执行文件名,用管理员会话执行带 -b 的组合;普通权限下该列会提示信息不足,容易误判成没有进程占用。