查询服务器端口,最直接的方法是使用操作系统自带的命令行工具,如Linux的netstat、ss、lsof,Windows的netstat和资源监视器,或者借助第三方端口扫描工具快速定位。
服务器端口怎么查询?主流操作系统命令详解
无论你管理的是云服务器还是物理机,端口查询都是日常运维的高频操作,不同操作系统的命令习惯差异较大,但核心思路一致:通过工具列出当前系统上所有网络连接和监听列表,再过滤出目标端口。
Linux服务器端口查看的三种常用命令
Linux系统下端口查询的命令不少,但实际工作中最常用的就三个:netstat、ss和lsof,它们各自有擅长的场景。
netstat -tulpn 是经典组合,参数含义如下:
-t显示TCP端口-u显示UDP端口-l只显示监听中的端口-p显示对应的进程PID和名称-n以数字形式显示地址和端口(不解析域名)
执行后你会看到类似这样的输出:
Proto Recv-Q Send-Q Local Address Foreign Address State PID/Program name
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
每一行代表一个端口,Local Address列里的0.0.0:22表示本机所有IP的22端口都在监听,对应的服务是sshd,如果只想看某个端口,可以用grep过滤,例如netstat -tulpn | grep :80。
ss -tulpn 是netstat的现代替代品,功能类似但执行速度更快,尤其在高并发服务器上,ss的开销远小于netstat,参数含义与netstat基本一致,推荐优先使用ss,因为它直接读取内核信息,不依赖/proc文件系统,命令ss -tulpn的输出格式和netstat相似,但更简洁。
lsof -i :端口号 适合精准定位某个端口占用的进程,比如你想知道谁在用3306端口,直接运行lsof -i :3306,会列出该端口上所有打开的文件描述符,包括进程PID、用户、文件描述符类型等,lsof的优势是能显示更详细的进程信息,但需要root权限才能看到全部进程。
日常排错时,我习惯先用ss快速扫一遍监听列表,再用lsof深挖某个异常端口,如果服务器上没装ss和lsof,netstat是默认都会带的,几乎每个Linux发行版都内置。
Windows服务器端口怎么查?图形与命令行结合
Windows服务器下端口查询同样有命令行和图形界面两种路径,生产环境常通过远程桌面操作,命令行更高效,但图形工具对新手更友好。
命令提示符(cmd) 使用netstat -ano:
-a显示所有连接和监听端口-n以数字形式显示地址和端口
-o显示关联的进程PID
输出示例:
Proto Local Address Foreign Address State PID
TCP 0.0.0.0:80 0.0.0.0:0 LISTENING 4
TCP 0.0.0.0:135 0.0.0.0:0 LISTENING 1232
看到端口后,如果想确认PID 4对应什么进程,可以打开任务管理器,在“详细信息”选项卡里找到PID列,或者用命令tasklist | findstr "4",如果端口很多,可以用netstat -ano | findstr :3389快速定位。
资源监视器 是Windows自带的图形化工具,比任务管理器更详细,按Win+R输入resmon打开,切换到“网络”标签页,在下方的“监听端口”区域就能看到所有端口及其对应的进程、协议、地址,这里可以直接看到进程名,省去查PID的步骤,对于不熟悉命令行的运维新手,资源监视器是最直观的Windows服务器端口查看方法。
PowerShell 提供的Get-NetTCPConnection命令功能更强,支持筛选和排序,例如Get-NetTCPConnection -LocalPort 443直接列出所有443端口的连接,包含状态、本地地址、远程地址等。Get-NetUDPEndpoint用来查看UDP端口,PowerShell的输出可以管道传递给Format-Table或Where-Object,适合做脚本化批量查询。
服务器端口查询命令的对比与选择
| 命令/工具 | 适用系统 | 核心特点 | 推荐场景 |
|---|---|---|---|
| netstat | Linux/Windows | 通用性最强,几乎所有系统都预装 | 快速查看监听端口,兼容性优先 |
| ss | Linux | 速度快,输出信息更全面 | 高并发服务器,替代netstat |
| lsof | Linux | 精准定位端口与进程关系 | 排查端口被占用,查看文件描述符 |
| Windows netstat | Windows | 命令行基础工具,配合findstr | 无图形界面时首选 |
| 资源监视器 | Windows | 图形化,直观显示进程名 | 远程桌面操作,新手友好 |
| PowerShell | Windows | 可脚本化,筛选能力强 | 自动化运维,批量查询 |
端口查询结果怎么看?理解端口状态与常见问题
拿到查询结果后,很多人只关心端口号,却忽略了状态列,不同状态代表不同的含义,直接影响排错方向。
LISTEN、ESTABLISHED、TIME_WAIT 等状态的含义
- LISTEN:端口正在监听,服务已启动并等待连接,这是你查询端口时最希望看到的状态,表示服务正常运行。
- ESTABLISHED:已建立的连接,表示当前有客户端通过这个端口与服务器通信,如果ESTABLISHED数量异常多,可能是流量过大或遭受攻击。
- TIME_WAIT:主动关闭连接后的等待状态,通常持续几十秒到几分钟,是正常现象,但如果TIME_WAIT数量过多,可能会耗尽端口资源,需要调整内核参数。
- CLOSE_WAIT:被动关闭连接时,对方关闭连接后本端未及时关闭,通常由程序bug导致,需要排查应用代码。
- SYN_SENT:正在尝试发起连接,如果持续不变成ESTABLISHED,可能是目标端口未开放或防火墙拦截。
如何判断端口是否正常监听
查询端口时,如果看到LISTEN状态,说明端口已打开并等待连接,但有时你发现端口没在LISTEN列表里,可能的原因有:
- 服务未启动或启动失败,先检查进程是否存在。
- 服务监听的IP地址不对,比如只监听127.0.0.1,外部无法访问。
- 防火墙拦截了端口,但防火墙不会影响本机localhost的连接,所以如果本机
curl 127.0.0.1:端口能通,外部不行,基本可以锁定防火墙。
场景:服务器端口打不开或无法访问,怎么排查?
这是运维中最常见的需求,也是服务器端口怎么查询这个问题的核心延展,端口查到了,但业务就是连不上,问题出在哪里?
检查防火墙规则
Linux防火墙主要有iptables和firewalld,用iptables -L -n查看规则列表,如果发现目标端口被DROP或REJECT,就是防火墙拦截了,firewalld下用firewall-cmd --list-ports查看开放的端口列表,或者用firewall-cmd --zone=public --list-all查看完整配置,Windows防火墙在“高级安全Windows Defender防火墙”里查看入站规则,也可以用netsh advfirewall firewall show rule name=all命令行查看。
确认服务是否监听在正确端口
有时你启动了服务,但端口没监听,可能是因为配置文件里绑定了错误的IP或端口,例如Nginx默认监听80端口,但如果配置文件里listen 127.0.0.1:80,外部就无法访问,查询端口后,注意Local Address列里的IP地址,如果是127.0.0.1或localhost,说明只对本地开放,需要改成0.0.0.0或具体的外网IP。
端口被占用如何解决
查询端口时发现目标端口已经被其他进程占用,你需要找到那个进程并决定是否结束它,用lsof -i :端口号或netstat -ano | findstr :端口号找到PID,
- Linux:
kill -9 PID强制结束进程,但建议先用kill PID正常终止。 - Windows:
taskkill /F /PID 进程号。
如果占用端口的是系统关键进程(如PID 4的System进程),通常表示端口被系统保留或由其他服务占用,此时需要修改你的服务端口,或停止占用该端口的服务。
服务器端口检测工具推荐:哪个好用?
命令行虽强,但有时需要远程检测服务器端口是否开放,或者你想快速扫描一个网段里哪些端口开着,这时候第三方工具更方便。
在线端口扫描工具
你可以在浏览器里打开yougetsignal.com、tool.chinaz.com/port等网站,输入服务器IP和端口号,点击检测,这类工具适合快速验证端口是否对外开放,尤其适合在本地电脑上测试服务器,不需要在服务器上装任何东西,但注意,在线工具只能检测公网IP,内网地址无法使用。
本地图形化工具
Nmap 是业界公认的端口扫描神器,支持Windows、Linux、macOS,虽然它主要是命令行,但Windows版也提供图形前端Zenmap,Nmap可以扫描单个端口、一段端口范围,甚至整个子网,常用命令nmap -p 80,443 你的服务器IP,输出结果会显示端口状态(open、filtered、closed),Nmap功能强大,但新手需要花点时间学习参数。
Advanced Port Scanner 是Windows下的轻量级工具,完全免费,界面简洁,输入IP段和端口范围,点击扫描,几秒钟就能列出开放端口和对应的服务名,它还能识别常见的服务(如HTTP、FTP、SSH),适合快速巡检。
工具对比表
| 工具 | 平台 | 优点 | 缺点 |
|---|---|---|---|
| 在线扫描工具 | 网页 | 无需安装,操作简单 | 只能扫公网IP,有速率限制 |
| Nmap | 跨平台 | 功能全面,可深度探测 | 学习曲线陡峭,参数复杂 |
| Advanced Port Scanner | Windows | 免费,速度快,界面友好 | 功能相对单一,不支持深度分析 |
服务器端口怎么查询?常见问题解答
服务器端口怎么查询是否开放?
使用netstat -tulpn(Linux)或netstat -ano(Windows)查看监听状态,如果看到端口处于LISTEN,说明本机已开放,从外部检测,可以用telnet、nc、或在线端口扫描工具连接目标IP和端口,能成功建立连接即为开放。
查询端口时提示“无权限”怎么办?
Linux下普通用户执行netstat和ss时,无法看到其他用户的进程信息,但端口列表依然可见,如果lsof显示“permission denied”,需要用sudo提权,Windows下以管理员身份运行cmd或PowerShell即可获取所有进程信息。
服务器端口查询结果与预期不符?
先确认服务是否正在运行,用ps aux | grep 服务名或任务管理器检查,再检查服务配置文件里的监听地址和端口,确保没有写错,如果本地查询显示LISTEN但外部无法访问,重点排查防火墙规则和云服务器安全组(如简米云、酷番云的安全组规则)。
首发原创文章,作者:王坚,如若转载,请注明出处:https://idctop.com/article/527342.html



