结论先行,netstat 是 Windows Linux 系统自带的网络诊断命令,核心功能是查看本机所有网络连接、监听端口、路由表、网卡统计信息,常用来排查端口占用、查看对外连接、确认服务是否正常监听,属于运维、网络排错最基础的命令,它可以展示 TCP、UDP 连接状态,本地 IP 端口、远程 IP 端口、连接状态,还能关联对应的进程 PID,很多新手只知道查端口占用,不清楚它还可以查看路由表和网卡收发统计,掌握常用参数之后,排错效率会明显提升。
基础核心功能
1 查看活动 TCP/UDP 网络连接,也就是本机和外部主机已经建立的连接
2 查看本机正在监听的端口,判断服务有没有正常启动监听
3 查看系统路由表,确认默认网关、静态路由条目
4 查看网卡接口统计数据,包含收发数据包、丢包、错误包计数
5 显示连接对应的进程 PID,定位是哪个程序占用端口
常用参数说明
| 参数 | 作用 |
|---|---|
| -a | 显示所有连接和监听端口,包含 TCP UDP |
| -n | 以数字形式显示 IP 和端口,不做域名反向解析,查询速度更快 |
| -o | 显示关联进程 PID,定位占用端口程序,排错最常用 |
| -p tcp | 只筛选 TCP 协议连接,也可以写 udp |
| -r | 打印路由表,等同于查看路由信息 |
| -e | 显示网卡接口统计信息 |
| -s | 按协议分类统计,TCP UDP ICMP IP 的数据包统计 |
经典组合命令:netstat -ano,运维最常用,显示全部连接、数字 IP、进程 PID
连接状态说明
LISTENING 监听状态,端口等待外部连接
ESTABLISHED 已经成功建立连接
TIME_WAIT 连接主动关闭之后等待状态,短时间保留
CLOSE_WAIT 对端已经关闭,本机还没有关闭连接
典型使用场景
1 排查端口被占用,比如 80 3306 端口启动失败,用 netstat -ano 查找占用 PID
2 检查服务是否监听,确认 Web 服务、数据库是否正常开启端口
3 排查异常外联,查看电脑是否有未知对外网络连接
4 检查路由表是否正确,排查跨网段不通问题
5 查看网卡数据包错误,判断网络丢包情况
使用步骤
第一步 打开命令提示符 CMD,或者 PowerShell,建议管理员权限运行
第二步 输入 netstat 加上需要的参数,回车执行
第三步 读取输出表格,本地地址、外部地址、状态、PID
第四步 如果需要定位程序,复制 PID,在任务管理器详细信息里面找到对应进程
第五步 如果只查指定端口,可以配合 findstr 筛选,例如 netstat -ano | findstr ":80"
补充说明
Windows 新版系统微软推荐替代工具是 Get-NetTCPConnection PowerShell 命令,但是 netstat 依然保留兼容,Linux 系统同样自带 netstat,不过新版本 Linux 很多已经推荐 ss 命令替代 netstat,基础排错 netstat 依旧通用。
综合总结
netstat 本质就是系统内置网络状态查询命令,核心就是查连接、查监听端口、查路由、查网卡统计,搭配 - ano 是排错黄金组合,配合 findstr 可以快速定位指定端口,是网络故障排查必备基础命令。
【常见问题】
问题 1 netstat 命令能不能直接看到是哪个程序占用端口
回答 1 netstat 命令加上 - o 参数可以显示进程 PID,再通过 PID 对应程序名称,也就是 netstat -ano 组合,就可以定位占用端口的程序。
问题 2 netstat -r 参数是做什么的
回答 2 netstat -r 参数功能是查看系统路由表,可以看到默认网关、路由条目,用来排查跨网段网络不通的问题。
问题 3 netstat 命令里面 TIME_WAIT 是什么意思
回答 3 netstat 命令输出里 TIME_WAIT 代表连接主动关闭之后的等待状态,是 TCP 协议正常机制,大量 TIME_WAIT 会占用端口资源。
问题 4 Linux 里面 netstat 命令还推荐使用吗
回答 4 Linux 依然可以使用 netstat 命令,但是新版发行版优先推荐 ss 命令,ss 查询速度更快,netstat 属于兼容保留的传统命令。
免责声明:本内容为计算机命令科普,操作仅用于本机合法网络排查,禁止利用该命令从事违规网络探测行为。


