Linux/Window查网络连接/端口/套接字信息的方法大全
Linux/Window如何查网络连接/端口/套接字信息?最核心使用的是netstat命令,运维/开发必用,我会把它的核心用法、所有高频参数、实用组合命令、和ss命令的区别全部讲透,内容条理清晰,看完就能直接用
一、netstat 核心作用
netstat = network statistics(网络统计),命令的核心功能:
查询操作系统中所有的网络连接、监听的端口、路由表、网络接口状态、套接字信息,能清晰看到「本机和哪些IP建立了连接、哪个进程占用了哪个端口、哪些端口正在对外提供服务」。
适用系统:Linux、macOS、Windows全兼容,核心参数用法基本一致,少量参数有差异(下文会标注)。
核心定位:排查端口占用、网络连接异常、服务是否启动、是否有异常外联的首选命令。
二、netstat 语法格式
netstat [选项参数]
参数可以单字母使用(如-t),也可以组合使用(如-tulnp,最常用组合,强烈推荐背下来),参数之间无顺序要求。
三、netstat 高频核心参数(必记,按用途分类,好理解)
第一类:按「协议类型」筛选(只查TCP/UDP连接)
这类参数用来过滤只显示指定协议的网络连接,是最基础的筛选,必用:
-t:只列出 TCP 协议 的所有连接/监听端口(TCP是可靠传输,绝大多数服务用TCP:http/https/ssh/mysql等)-u:只列出 UDP 协议 的所有连接/监听端口(UDP是无连接传输:dns/广播/视频流等)-w:只列出 RAW原始套接字 相关连接(极少用,一般不用记)
第二类:按「连接状态」筛选(最核心,重中之重)
-l :全称 listening → 只显示「正在监听」的端口/套接字
核心意义:一台服务器的「服务端口」(如nginx的80、ssh的22、mysql的3306)启动后,都会处于LISTEN监听状态,等待客户端连接。执行netstat -l就能看到本机所有对外提供服务的端口,排查「服务是否启动成功」首选。
第三类:实用补充参数(必加,提升查询价值)
-n :全称 numeric → 以「数字形式」显示所有信息,不做域名/主机名解析
✅ 核心作用:
- 速度极快:不加
-n时,netstat会尝试把IP解析成域名、把端口号解析成服务名(如80→http),耗时很长; - 结果准确:避免解析失败导致的乱码/错误,生产环境必加
-n,这是铁律! - 格式统一:IP就是IP、端口就是端口,方便后续筛选/查看。
-p :全称 program → 显示每个网络连接对应的「进程PID」和「进程名称」
核心意义:这是netstat最核心的参数之一!能直接告诉你「哪个进程占用了哪个端口」,比如查到端口8080被占用,用-p就能精准定位到是java进程还是tomcat进程,排查「端口占用」的核心参数。
注意:Linux系统中,普通用户执行-p可能看不到完整进程信息,需要加sudo(如sudo netstat -tulnp)才能查看所有进程的PID和名称,Windows无此限制。
-a :全称 all → 显示「所有」的网络连接状态,包含:监听状态(LISTEN)、已建立连接(ESTABLISHED)、等待连接(CLOSE_WAIT/TIME_WAIT)、关闭状态等,不加-a默认只显示已建立的连接。
四、netstat 「最常用的4个组合命令」(重中之重,背下来!)
所有参数的核心价值都在组合使用,这4个命令覆盖了99%的日常使用场景,优先级从高到低排序,按需使用即可,全部都是生产环境高频用法:
组合1:netstat -tulnp【⭐⭐⭐⭐⭐ 封神级,最最常用,没有之一!】
含义拆解
-t(TCP) + -u(UDP) + -l(监听中) + -n(数字显示) + -p(显示进程PID/名称)
核心作用
查询本机上「所有正在监听的TCP/UDP端口」+「对应的进程信息」
适用场景
✅ 检查服务是否启动(如:nginx的80端口、mysql的3306、redis的6379是否处于LISTEN状态)
✅ 快速查看本机所有对外提供的服务端口,以及端口被哪个进程占用
✅ 排查「端口被占用」的问题(比如启动tomcat提示8080被占用,执行这个命令直接定位占用进程)
典型输出示例
tcp 0 0 0.0.0.0:22 0.0.0.0:* LISTEN 1234/sshd tcp 0 0 0.0.0.0:80 0.0.0.0:* LISTEN 5678/nginx tcp6 0 0 :::3306 :::* LISTEN 9102/mysqld udp 0 0 0.0.0.0:53 0.0.0.0:* 7890/named
输出字段说明(从左到右):协议 → 接收队列 → 发送队列 → 本机IP:端口 → 远程IP:端口 → 状态 → PID/进程名
组合2:netstat -anpt【⭐⭐⭐⭐ 高频,查TCP所有连接】
含义拆解
-a(所有连接) + -n(数字显示) + -p(进程信息) + -t(TCP协议)
核心作用
查询本机「所有TCP协议的网络连接」,包含:监听状态(LISTEN)、已建立连接(ESTABLISHED)、TIME_WAIT/CLOSE_WAIT等所有状态,同时显示每个连接对应的进程PID/名称。
适用场景
✅ 排查TCP连接异常(如:大量TIME_WAIT连接堆积、有异常的远程IP连接本机)
✅ 查看本机和哪些远程IP建立了TCP连接(比如:本机的java程序是否连接了指定的mysql服务器)
组合3:netstat -anpu【⭐⭐⭐ 高频,查UDP所有连接】
含义拆解
-a(所有连接) + -n(数字显示) + -p(进程信息) + -u(UDP协议)
核心作用
查询本机「所有UDP协议的连接/监听端口」及对应进程
适用场景
UDP是无连接协议,没有「已建立连接」的状态,主要用来查看UDP的监听端口(如DNS的53端口、DHCP的67/68端口)。
组合4:netstat -ant【⭐⭐⭐ 快速查询,无进程信息】
含义拆解
-a(所有) + -n(数字) + -t(TCP)
核心作用
快速查询本机所有TCP连接状态,不显示进程信息
适用场景
✅ 不需要知道进程信息,只想快速看TCP连接情况,执行速度最快,适合服务器负载高时使用。
五、和你上一条命令联动:netstat+grep组合筛选(超实用!)
和ps -ef | grep xxx的逻辑完全一致,netstat的查询结果也可以通过 管道符| + grep 进行精准筛选,这是生产环境的必杀技,解决「精准查询某一个端口/进程/状态」的需求,推荐几个高频筛选写法,全部背下来:
场景1:查询「指定端口」是否被占用/监听(最常用)
比如查 8080 端口、3306 端口:
# 查8080端口的所有相关连接/监听状态 + 进程信息 netstat -tulnp | grep 8080 # 查3306端口(mysql)是否在监听 netstat -tulnp | grep 3306
场景2:查询「指定进程」占用的所有端口
比如查 nginx、java、mysql 进程对应的端口:
netstat -tulnp | grep nginx netstat -tulnp | grep java netstat -tulnp | grep mysql
场景3:查询「指定连接状态」的所有连接
比如排查是否有大量TIME_WAIT或ESTABLISHED连接堆积:
# 查看所有已建立的TCP连接 netstat -ant | grep ESTABLISHED # 查看所有TIME_WAIT状态的TCP连接(这类连接过多会占用端口资源) netstat -ant | grep TIME_WAIT
六、netstat 输出中「常见的连接状态」解释(运维必懂)
执行netstat -anpt会看到很多STATE(状态)列的值,这些状态是TCP协议的核心,掌握后能排查绝大多数网络连接异常,记住高频的5个即可:
- LISTEN :监听状态 → 本机的端口正在等待客户端连接(服务已启动,正常状态)
- ESTABLISHED :已建立连接 → 本机和远程主机的连接已经成功建立,正在传输数据(正常的业务连接)
- TIME_WAIT :等待关闭 → 连接已经断开,系统会保留该连接一段时间(默认60秒),防止丢包,少量属于正常,大量则会占用端口资源
- CLOSE_WAIT :被动关闭 → 对方已经断开连接,但本机的程序没有主动关闭连接,出现大量该状态=程序有bug(未释放连接)
- SYN_RECV :等待同步 → 正在建立TCP三次握手的中间状态,少量正常,大量则可能是SYN洪水攻击
七、重要补充:netstatvsss命令(必知)
为什么很多人说「netstat 过时了」?
netstat 是传统的网络查询命令,而Linux系统在2.6.25内核之后,推出了一个全新的、性能更强的命令 ss(socket statistics),二者的关系是:
ss 是 netstat 的「升级版+替代版」,功能完全覆盖netstat,且执行速度更快、占用资源更少、支持的参数更多。
核心区别
- 性能差异:当服务器的网络连接非常多(比如几万/几十万连接)时,
netstat会非常慢(因为它从/proc/net/tcp读取数据,解析耗时),而ss直接读取内核的tcp_hashinfo,速度提升百倍以上。 - 功能差异:
ss支持更多高级筛选(如按连接数、按端口范围),能显示更多内核级的网络信息。 - 兼容性:
netstat在部分精简版Linux系统(如Alpine)中默认未安装,而ss是默认自带的。
无缝替换:ss对应netstat的核心写法
ss 的参数和netstat 高度相似,学会netstat后,ss 几乎零成本上手,推荐的替换写法(生产环境优先用ss):
# netstat -tulnp 等价替换(推荐,速度超快) ss -tulnp # netstat -anpt 等价替换 ss -anpt # 筛选指定端口 ss -tulnp | grep 8080
总结:该用哪个?
✅ 日常学习/Windows系统:放心用 netstat,兼容性无敌,语法简单;
✅ Linux生产环境/高并发服务器:优先用 ss,性能碾压,功能更强;
✅ 面试必答:ss 是 netstat 的替代命令,性能更好,推荐使用。
八、Windows系统中的 netstat 用法(补充)
netstat在Windows中完全通用,只是有2个小差异,用法几乎一致,Windows用户也能直接用:
- Windows中
netstat没有-p参数,而是用-o参数来显示进程PID; - Windows中查看端口对应的进程名称,需要结合任务管理器(详细信息→PID列)。
Windows 高频写法
# 查看所有监听的TCP/UDP端口 + PID netstat -tulno # 查指定端口(如8080) netstat -tulno | findstr 8080
九、全文核心知识点总结(浓缩精华,方便记忆)
netstat是网络状态查询命令,查端口、连接、进程占用,Linux/Windows通用;- 核心参数:
-t(TCP)、-u(UDP)、-l(监听)、-n(数字显示,必加)、-p(进程PID)、-a(所有连接); - 封神组合:
netstat -tulnp→ 查所有监听端口+进程,必背; - 精准筛选:
netstat -tulnp | grep 端口/进程名→ 精准查询,生产环境必杀技; - 替代命令:
ss是netstat的升级版,性能更强,参数几乎一致,ss -tulnp无缝替换; - 核心状态:LISTEN(监听)、ESTABLISHED(已连接)、TIME_WAIT(等待关闭)。
希望这份详解能帮你彻底掌握netstat命令,它和ps、grep一起,是Linux运维/开发的三大基础命令,掌握后能解决绝大多数进程和网络的排查问题 ✅!
以上就是Linux/Window如何查网络连接/端口/套接字信息的方法大全的详细内容,更多关于Linux/Window查网络连接/端口/套接字信息的资料请关注脚本之家其它相关文章!
相关文章
Service Temporarily Unavailable的503错误是怎么回事?
一般来说,出现Service Temporarily Unavailable错误多半是因为网站访问量大,造成了流量超限或者并发数大引起的资源超限出现的错误2013-05-05
解决Linux Centos yum-config-manager --add-repo添
这篇文章主要介绍了解决Linux Centos yum-config-manager --add-repo添加仓库添加错误问题,具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地方,望不吝赐教2024-04-04
Ubuntu Server 14.04升级Ubuntu Server 16.04
这篇文章主要介绍了 Ubuntu Server 14.04升级Ubuntu Server 16.04,具有一定的参考价值,感兴趣的小伙伴们可以参考一下。2016-12-12


最新评论