命令行怎么查看网络连接状态?Windows、Linux、macOS 实用排查指南
服务器连不上、命令网页打不开、行查远程桌面卡顿,看网很多人第一反应是络连重启路由器或换浏览器,但真正的接状问题往往藏在系统底层的连接表里。命令行怎么查看网络连接状态,实用是排查运维、开发和普通用户都值得掌握的指南一项基础技能,因为它不依赖图形界面,命令输出信息更完整,行查也更容易复制给别人排查。看网本文按 Windows、络连Linux、接状macOS 三类常见系统,实用给出可直接照抄的排查命令、结果解读方式,以及查不到结果时的分支处理思路。
需要先说明一点:不同发行版和系统版本对命令的支持略有差异,部分参数可能因权限或系统版本而不同,具体以你本机的命令帮助(如 --help)和系统界面为准。下面出现的命令都尽量选择通用、长期存在的写法。
先弄清要看什么:连接状态分几类
网络连接状态大致分三层:一是本机网卡是否启用、IP 是否拿到;二是本机与外部建立的连接(TCP/UDP)处于什么状态,比如 LISTEN、ESTABLISHED、TIME_WAIT;三是域名解析和路由是否正常。很多人只查第一层就下结论,结果误判。一般建议按“网卡 → 连接表 → 路由/解析”的顺序排查,能更快缩小范围。
其中 LISTEN 表示本机某端口正在等待连接,通常是服务端程序;ESTABLISHED 表示双向连接已建立;TIME_WAIT 是连接正常关闭后的短暂残留,数量多不等于故障,但持续暴涨值得关注。理解这几个词,后面看输出就不会一头雾水。
Windows:netstat 与 Get-NetTCPConnection
传统写法是在命令提示符或 PowerShell 中输入 netstat -ano。它会列出协议、本地地址、外部地址、状态和进程 PID。常见组合是 netstat -ano | findstr ESTABLISHED,用来只看已建立的连接;想找某个端口,比如 8080,可以写 netstat -ano | findstr :8080。拿到 PID 后,再到任务管理器“详细信息”里对照,或执行 tasklist | findstr 进程号 确认是哪个程序。
较新的 Windows 推荐用 PowerShell 的 Get-NetTCPConnection,可读性更好。例如 Get-NetTCPConnection -State Listen 查看监听端口,Get-NetTCPConnection | Where-Object LocalPort -eq 443 查看 443 端口连接。如果提示权限不足,用管理员身份打开终端再试。
失败分支:如果 netstat 显示没有任何外部连接,先别急着判断断网,执行 ping 一个常用域名看是否通;若 ping 通但连接为空,多半是本机没有发起请求或程序未运行,而不是链路故障。
Linux:ss 优先,netstat 作为补充
在现代 Linux 上,ss 已逐步取代 netstat。常用命令有 ss -tuln,其中 t 表示 TCP、u 表示 UDP、l 表示监听、n 表示不解析域名,输出更干净。想只看已建立连接可用 ss -tn state established;查具体端口用 ss -tn sport = :22。如果系统较老或没装 iproute2,再用 netstat -tunlp,加 p 需要 root 或 sudo 才能看到进程名。
排查“端口被占用”时,可以先用 ss -tulnp | grep 端口号 定位进程,再决定是停服务还是改配置。若命令提示 command not found,说明对应工具未安装,可通过系统包管理器安装 iproute2 或 net-tools,具体包名以发行版官方仓库为准。
失败分支:如果 ss 输出为空但服务明明在跑,先确认服务是否绑定到 127.0.0.1 而非 0.0.0.0,前者只允许本机访问;同时确认防火墙规则是否放行,可用系统自带防火墙管理工具查看,不要凭猜测直接关闭防火墙。
macOS:lsof 与 netstat 组合使用
macOS 自带 netstat,但更常用的是 lsof -i,它能直接列出网络连接及对应进程。例如 lsof -iTCP -sTCP:LISTEN 查看监听中的 TCP 端口,lsof -i :5000 查看 5000 端口占用。若提示权限问题,命令前加 sudo。也可以用 netstat -an | grep ESTABLISHED 快速看已建立连接数量。
需要注意,macOS 的某些系统服务会占用较多端口,看到陌生进程不要立刻结束,先通过进程名和路径判断用途,必要时再处理。
查完之后:三个容易忽略的核对点
最后给一个可执行的小结:先确认网卡和 IP,再用 ss(Linux)、netstat/Get-NetTCPConnection(Windows)、lsof(macOS)查看连接表,最后结合路由与域名解析验证。把这几步固定成排查顺序,命令行怎么查看网络连接状态就不再是临时搜索的问题,而是一套能重复使用的方法。遇到与账号、政务或安全相关的判断,仍以官方渠道和系统提示为准。