查IP对应的服务器端口号,核心思路不是“直接查看”,而是“主动探测”用Telnet、nc这类工具去连接目标IP的指定端口,通了就说明端口开放;本机层面则用netstat或ss命令查看监听状态。
查ip对应服务器端口号,先分清两种场景
很多人一上来就问“怎么查”,但其实这个问题的答案完全取决于你查的对象是什么,搞混了场景,后面的操作全都会跑偏。
你要查的是自己的服务器
自己有服务器权限,那一切好办,登录服务器,用系统自带的命令就能把端口号查得一清二楚,包括哪个进程在监听、监听在哪个IP上、状态是LISTENING还是ESTABLISHED,都能看到。
这种情况下查出来的端口号是最准确的,因为数据直接来自操作系统内核。
你要查的是别人的IP或远程服务器
没有登录权限,纯靠外部探测,这时候你没法直接看到对方的进程列表,只能通过“发一个请求过去,看对方回不回应”的方式来判断端口是否开放。
这种方式有天然局限:只能判断端口通不通,查不到进程信息,比如你用工具扫出来某个IP的8080端口是开的,但你不知道背后跑的是Tomcat还是Nginx。
公网IP和内网IP,查法完全不同
这里必须提一嘴地址类型,如果你要查的是内网IP(比如192.168.x.x),那需要你先连上同一个局域网才能探测,而公网IP的端口查询则受制于路由器的端口映射规则即使服务在内网机器上运行,只要路由器没做转发,公网IP上照样探测不到。
业内专家指出,多数人遇到的“IP端口查不到”问题,根源就在于内网穿透和端口映射没配置好。
端口查询命令有哪些:本机常用命令实测
如果你有服务器权限,那下面这两条命令是最高频的,务必熟练掌握。
Windows系统:netstat -ano 一条命令看清所有端口
在CMD或PowerShell里执行以下命令:
netstat -ano
参数拆解:
a显示所有连接和监听端口n以数字形式显示地址和端口号(不做域名反解,速度快)o显示对应的进程PID
执行后你会看到类似这样的输出:
TCP 0.0.0.0:3389 0.0.0.0:0 LISTENING 1234
最后一列是PID,想查是哪个程序占用,接着执行:
tasklist | findstr 1234
就能看到对应的进程名,如果你只想筛选“正在监听”的端口,可以加findstr过滤:
netstat -ano | findstr LISTENING
Linux系统:ss -tlnp 比netstat更高效
老教程爱推netstat,但现代Linux发行版(CentOS 7+、Ubuntu 16.04+)更推荐用ss命令,因为它在连接数多的时候性能更好:
ss -tlnp
参数说明:
t仅显示TCP端口l仅显示监听的套接字n以数字显示,不做域名解析p显示进程信息
输出效果:
State Local Address:Port Process
LISTEN 0.0.0.0:80 nginx
LISTEN 0.0.0.0:3306 mysqld
一眼就能看出80端口是Nginx在监听,3306是MySQL,非常直观。
常用参数对比表
| 命令 | 用途 | 适用系统 | 关键参数 |
|---|---|---|---|
netstat -ano |
查看端口和PID | Windows | -a -n -o |
tasklist |
PID对应进程名 | Windows | 配合findstr |
ss -tlnp |
监听端口+进程 | Linux | -t -l -n -p |
lsof -i:80 |
查指定端口占用 | Linux/macOS | -i:端口号 |
netstat -tlnp |
传统方式查看 | Linux(旧版) | -t -l -n -p |
注意:Linux下用
lsof -i:80可以更精准地只看80端口被谁占用,不用在列表里翻。
远程IP端口探测:telnet和nc是主力,在线工具做补充
没有服务器权限时,你得用探测类工具,这类工具本质上都是“发个TCP握手包,看对方是否响应”。
telnet:最朴素的端口连通性测试
Windows系统自带telnet客户端(部分版本需手动开启),用法极其简单:
telnet 192.168.1.100 8080
如果端口开放,你会看到黑窗口直接跳进一个空界面,或者显示连接成功的提示,如果端口不通,会卡在“正在连接…”然后超时,或者直接提示“无法打开到主机的连接”。
局限性也很明显:telnet一次只能测一个端口,且无法判断端口背后的协议类型,很多服务器出于安全考虑会禁用telnet协议,但这不影响它作为TCP探测工具使用。
nc(netcat):支持端口范围批量扫描
nc是更专业的端口探测工具,Linux下通常预装,用法如下:
nc -zv 192.168.1.100 20-100
参数含义:
z扫描模式,不发送数据v显示详细信息
执行后会逐个扫描20到100号端口,并显示哪些是开放的,想测试单个端口也可以用:
nc -zv 192.168.1.100 3306
nc支持TCP和UDP,用-u参数即可切换。
在线端口扫描工具:适合不会命令行的人
如果手边没有命令行环境,或者想快速扫多个端口,可以用在线工具,常见的服务有站长工具、YouGetSignal等网站提供的端口扫描功能,输入IP和端口范围就能出结果。
这类工具的优点是可视化、不用记命令;缺点是扫描速度受限于网络延迟,且部分工具只支持TCP协议,UDP端口的探测仍然需要专业的本地工具。
端口不通怎么排查?按这四步走
这是最常遇到的真实问题:别人访问不了你的服务,或者你连不上别人的端口,按下面的顺序排查,大概率能定位问题。
第一步:确认服务真的在监听
登录服务器执行ss -tlnp或netstat -ano,看端口是否处于LISTENING状态。
- 如果端口都没在监听,说明服务没启动或启动失败了
- 如果监听地址是
0.0.1而不是0.0.0,说明服务只允许本机访问,需要改配置
第二步:检查防火墙和云安全组
这是端口不通最常见的坑,新买的云服务器(简米云、酷番云等),默认安全组只放行少数几个端口(如22、3389),其他端口全部拒绝。
云控制台操作路径:登录云厂商控制台 → 找到对应的实例 → 进入安全组配置 → 添加入站规则,这一步网上的教程很多,关键词“云服务器安全组配置”可查。
同时检查服务器系统防火墙:
- Linux:
systemctl status firewalld(CentOS)或ufw status(Ubuntu) - Windows:检查“Windows Defender防火墙”的高级设置
第三步:确认公网IP的端口映射
如果你的服务跑在内网服务器上,但对外使用的是公网IP,那必须在路由器上做端口映射(也叫虚拟服务器)。
举个实例:内网机器IP是192.168.1.10,跑着80端口的Web服务,你希望外网通过公网IP访问,需要进入路由器管理后台,找到“端口映射”或“虚拟服务器”功能,把公网IP的80端口转发到192.168.1.10的80端口。
第四步:用tracert/traceroute看中间链路
如果上面三步都排除了,仍然不通,可能是中间网络(运营商、机房)屏蔽了端口,这时用:
tracert 目标IP # Windows
traceroute 目标IP # Linux/macOS
看数据包在哪个节点丢失,如果最后一跳丢包而前面正常,大概率是目标主机的防火墙拦截;如果中间某节点开始不响应,可能是链路问题。
常见问题解读
Q1:查ip对应服务器端口号用什么命令最快?
有服务器权限时,Linux用ss -tlnp,Windows用netstat -ano,这两条命令都是毫秒级返回结果,远程探测时,wq封装好的nc -zv指令比telnet效率更高,因为它支持批量端口扫描。
Q2:同一个IP不同端口为什么有的通有的不通?
行业共识认为,这通常是因为服务部署差异和防火墙规则的不同,比如一台服务器上同时跑着80(HTTP)和443(HTTPS)通过,而22(SSH)被限制为内网访问这属于安全策略的主动设计。
Q3:telnet连接超时和拒绝连接分别代表什么?
- 拒绝连接:目标IP可达,但该端口没有服务在监听,或防火墙直接返回RST包
- 超时:数据包发出去了,但目标IP没有响应或丢包了,可能是IP不存在、防火墙静默丢弃,或中间链路不通
这两个状态的差异是排查问题的重要线索,追查方向完全不同。
首发原创文章,作者:王坚,如若转载,请注明出处:https://idctop.com/article/684239.html





