想知道自己电脑的IP和服务器端口,最快的方法是按下Win+R输入cmd打开命令提示符,执行ipconfig查看本机IP,执行netstat -ano查看端口占用情况,这两个命令能解决90%以上的查询需求。
搞清楚你的IP是哪一种
很多人查IP时一头雾水,就是因为没分清楚自己需要的是哪种IP地址,简单说,你的电脑至少有两个身份:一个是局域网里的内网IP,另一个是互联网上的公网IP。
内网IP指的是你在家里或公司路由器下面分配到的地址,常见的是192.168.x.x或10.x.x.x这种格式,公网IP则是运营商分配给你家的宽带出口地址,全世界唯一。
- 内网IP用于局域网内设备互访,比如手机连WiFi访问电脑上的共享文件夹
- 公网IP用于互联网上的设备访问你的电脑,比如外网用户要连你搭的网站
- 还有一种叫回环地址,也就是127.0.0.1,代表电脑自己访问自己,常用于本机测试服务
搞清楚你要哪个IP,再去用对应的方法查,就不会白忙活,看服务器端口也是同理,先确认是在本机查还是远程查,操作路径完全不同。
怎么查看本机IP地址
用ipconfig命令一条条看
Windows系统下打开命令提示符,输入ipconfig回车,你会看到一大串信息,别让它吓到,重点看这几个字段:
- IPv4地址:这就是你电脑在当前网络里的内网IP
- 默认网关:通常是你路由器的地址,也是电脑访问互联网的出口
- DNS服务器:帮你把域名解析成IP地址的服务器
如果你接的是WiFi,信息会显示在“无线局域网适配器 WLAN”下面;插网线的话,看“以太网适配器 以太网”那一节,有些电脑装了虚拟机或多网卡,会有多个适配器列表,找带”已启用”字样且IP不是169.254开头的那一个,169开头的说明没正常拿到地址。
图形界面也能查
不喜欢敲命令的话,可以走设置界面,Win10和Win11路径差不多:设置 → 网络和Internet → WLAN或以太网 → 点击已连接的网络 → 下拉找到IPv4地址。
在Win11里,点击属性后还要往下滑一点才能看到IPv4信息,macOS用户则是在系统设置 → 网络 → 选择当前连接 → 详细信息,就能看到当前IP。
查公网IP的方法
想查公网IP,直接浏览器搜索“IP”两个字,搜索引擎会直接显示你当前出口的公网IP,也可以用curl命令:
curl ifconfig.me
curl ip.sb
公网IP分静态和动态两种,家庭宽带的公网IP一般是动态的,运营商每隔一段时间会换一次,如果你要搭建服务器让别人稳定访问,要么向运营商申请静态IP,要么用内网穿透工具。
查看服务器端口是否被占用
端口这个词对新手来说有点抽象,可以把它理解成电脑上的“门牌号”,IP地址告诉你住在哪栋楼,端口告诉你找哪个房间,服务要对外提供访问,就必须开一个端口等人进来。
netstat命令查端口
netstat是Windows自带的网络工具,用来查看端口状态,在命令提示符里执行:
netstat -ano
这个命令会列出所有当前的网络连接和监听端口,参数含义是:
- -a:显示所有连接和监听端口
- -n:用数字形式显示地址和端口号,不做域名解析,速度更快
- -o:显示每个连接对应进程的PID号,这是定位程序的关键
输出的结果里,本地地址那栏显示的是本机IP加端口,比如0.0.0.0:8080表示这台机器的所有IP都监听8080端口,127.0.0.1:3306表示只允许本机通过3306访问,监听状态有三种需要分清:LISTENING表示端口正在被服务监听等待连接,ESTABLISHED表示已有设备连着这个端口,TIME_WAIT表示连接刚关闭正在清理,不算占用。
从PID定位到具体程序
netstat查出来的PID只是数字,怎么知道是哪个程序的?继续执行:
tasklist | findstr PID号
比如你看到占用8080端口的PID是12345,输入后就能查到对应的是javaw.exe还是nginx.exe,想直接杀掉这个进程,执行taskkill /PID 12345 /F就能强制结束。
按端口号反向查询
已经知道端口号比如8080,想知道谁占用了它,可以精确过滤:
netstat -ano | findstr 8080
这里的竖线是管道符,把netstat的输出结果交给findstr筛选,只显示包含8080的那些行,比一大堆信息里肉眼找强得多,Linux系统上对应的命令是netstat -tlnp或ss -tlnp,Mac系统则是lsof -i :端口号。
常见端口冲突场景
多数情况下遇到端口冲突是在开发环境,比如你启动一个Web项目默认用8080,结果提示端口被占用,一看是之前一个没关干净的后台进程还在跑,行业共识认为,遇到这种情况直接杀掉占用进程最省事,但要注意别误杀系统关键进程,还有一个比较典型的情况,SQL Server默认用1433端口,MySQL用3306,Redis用6379,Tomcat默认是8080,这些常用端口被占的频率相当高。
查完端口后怎么处理实际问题
端口被占用想换一个端口
很多服务支持改配置换端口,Tomcat在conf目录下的server.xml里找Connector节点,把port属性改成其他值;Nginx在conf下的nginx.conf里改listen字段;MySQL的端口配置在my.ini文件里,改完要重启服务。
防火墙拦住了端口
服务本身配置没问题,但外部访问它就是不通,很可能是Windows防火墙挡了,放行端口路径:控制面板 → Windows Defender防火墙 → 高级设置 → 入站规则 → 新建规则 → 选择端口 → 填入端口号 → 允许连接,这样外部设备才能通过这个端口连上你电脑上的服务。
给电脑设置固定IP
端口确认没问题了,IP地址又是个变量,家里路由器默认用DHCP分配内网IP,电脑重启后IP可能就变了,如果多台机器都依赖这个IP访问,建议固定下来,做法是在路由器后台把电脑的MAC地址和IP绑定,或者在Windows网络设置里手动指定静态IP,两种方法都可以。
为什么查到的IP和端口别人连不上
排查完端口,发现你查出来的IP和端口别人还是访问不了,这个涉及内外网互通的问题,你查到的内网IP比如192.168.1.8,别人在地球另一边怎么可能连得上来?要让人家从公网访问你电脑上的服务,你需要做三件事:
- 有公网IP:运营商分配的公网IP是你对外访问的门牌号
- 做端口映射:路由器后台把公网IP的某个端口转发到你电脑的内网IP和端口上
- 防火墙放行:你电脑的入站规则要允许外部流量进来
没有公网IP的话,可以用内网穿透工具,比如ngrok、frp之类的开源方案,这类工具的原理是让电脑主动连接一个公网服务器,然后把你的本地端口映射成公网地址,别人访问这个公网地址就等于访问你电脑上的服务。
常见问题解答
为什么ipconfig里查不到IPv4地址?
多半是网卡没获取到IP,检查一下网线或WiFi是否连接正常,试试在命令提示符里执行ipconfig /release再执行ipconfig /renew重新获取地址。
netstat -ano查出来的端口全是LISTENING,正常吗?
正常,系统服务、后台程序、各种软件都在监听自己的端口,这是它们的通信入口,你只需要关注自己关心的那几个端口是否被占用即可,不用管其他端口状态。
同一个端口号能被多个程序同时使用吗?
不能,端口号是唯一的资源,一个端口同时只能被一个程序监听,但TCP和UDP协议是独立计算的,同一个端口号可以分别被一个TCP程序和一个UDP程序使用,互不干扰,占用了还想用的话必须杀掉现有进程或者修改端口配置。
了解IP和端口的查看方法只是入门,日常工作中很多网络问题都是从这两个基础信息开始排查的,记住ipconfig查IP、netstat查端口、tasklist找进程这个组合套路,网络连接问题你基本能自己解决一大半。
首发原创文章,作者:王坚,如若转载,请注明出处:https://idctop.com/article/790230.html

