netstat 是什么
netstat 是 Windows 自带的网络状态与统计工具,输出本机协议栈的实时视图:正在监听的端口、已建立的连接、等待回收的连接,以及按协议统计的数据包与错误计数。它不依赖任何额外组件,在任何 Windows 环境里都能直接运行,因此常被用作网络类排障的起点。输出是纯文本表格,列含义固定,配合 findstr 过滤就能快速定位端口、状态与进程编号。
基本信息
| 适用平台 | Windows CMD / PowerShell(系统自带 netstat.exe) |
|---|---|
| 语法 | netstat [-a] [-n] [-o] [-b] [-e] [-r] [-s] [-p 协议] [间隔秒数] |
| 排障标配 | netstat -ano,输出快且带进程编号 |
| 其它视角 | -r 显示路由表、-e 显示接口统计、-s 显示协议统计、-b 显示程序名 |
| 权限 | 查看连接无需提升,显示程序名需要管理员 |
| 提示 | 在 PowerShell 会话中应写 netstat.exe 以确保调用系统程序 |
典型使用场景
- 确认业务端口是否处于监听状态,判断服务是否真的启动成功
- 按状态过滤已建立连接,查看有哪些客户端正在访问
- 用协议统计观察重传与错误计数是否异常增长
- 查看路由表(-r)确认默认网关与明细路由是否符合预期
- 以固定间隔重复输出,观察连接数量随时间的变化趋势
- 配合进程查询命令定位占用端口的程序
常用示例
常用示例
:: 全部连接与监听,数字显示并附带进程编号
netstat -ano
:: 只看某端口的条目
netstat -ano | findstr :3306
:: 只看监听状态
netstat -ano | findstr LISTENING
:: 只看已建立的连接
netstat -ano | findstr ESTABLISHED
:: 协议统计
netstat -s -p tcp
:: 查看路由表
netstat -rn
:: 每 5 秒重复输出一次,观察趋势
netstat -ano 5状态字段速查
| 状态 | 含义 | 处理方向 |
|---|---|---|
| LISTENING | 本机在该端口等待连接 | 服务已启动,可继续排查五层以上问题 |
| ESTABLISHED | 双向连接已建立 | 按外部地址核实来源是否可信 |
| TIME_WAIT | 主动关闭后等待超时回收 | 短时大量出现属正常,无需处理 |
| CLOSE_WAIT | 对端已关闭,本机程序尚未释放连接 | 堆积说明程序未正确关闭连接 |
| SYN_SENT | 握手请求已发出未见应答 | 对端不可达或被策略拦截 |
| 绑定失败提示 | 端口被占用或权限不足 | 先定位占用进程再决定处置方式 |
拿到进程编号后可以用进程查询命令反查程序身份,再结合服务查询判断它是不是由系统服务承载,从而决定是停服务还是调整配置。
需要长时间观察时直接给命令加间隔秒数,让它在原窗口按周期刷新,比手工反复执行更省事;结束按 Ctrl+C 即可。