ARTICLE · INTELLIGENCE

战地情报 · 详情页

来自尧图项目组的一线实战观察与深度解析

Windows网络排查实战:用ipconfig和netstat查本地IP与端口占用

Windows网络排查实战:用ipconfig和netstat查本地IP与端口占用 1. 为什么“查IP端口”这件事值得单独写一篇很多人看到“查看电脑本地IP和端口号”这个标题第一反应是这有什么好写的ipconfig一敲不就出来了但我在实际帮人排查问题的过程中发现真正能把这件事讲清楚、用对场景的人并不多。有人敲完ipconfig看到一堆“隧道适配器”直接懵了不知道该看哪一个有人想确认某个服务到底有没有在监听却只会看IP不会看端口还有人拿到一个IP和端口不知道该怎么判断通不通。这些看起来零碎的问题其实都指向同一个核心技能准确获取本机网络身份并验证某个端口是否处于可用状态。这篇文章要解决的就是把这件“小事”彻底讲透。我会从ipconfig和netstat这两个最核心的命令讲起把它们的输出逐行拆开解释告诉你哪个是内网IP、哪个是外网IP、哪个是回环地址、哪个是隧道适配器以及端口号到底该怎么查、怎么验证、怎么排查占用。适合刚接触网络排查的新手也适合做了几年开发但一直没系统梳理过这块知识的同学。看完之后你至少能做到拿到一台电脑三分钟内搞清楚它的网络身份并判断某个端口是否正常工作。我先把结论放在前面查本地IP用ipconfig查端口监听和连接用netstat验证端口通不通用telnet或Test-NetConnection。这三板斧覆盖了日常九成以上的场景。下面我们一层一层拆开讲。2. 先搞清楚概念本地IP、端口号、隧道适配器到底是什么2.1 本地IP不等于“我的公网IP”这是最容易混淆的一点。所谓“本地IP”通常指的是本机在局域网内被分配的地址比如192.168.1.100、10.0.0.5、172.16.0.8这类。它们属于私有地址段只在局域网内部有效出了路由器就不认识了。而你在某些网站上看到的“我的IP”那是运营商分配给你的公网出口IP两者完全是两码事。打个比方本地IP就像你家的门牌号只在你所在的小区里能定位到你公网IP则是整个小区对外的统一地址。快递员外部请求只能先到小区门口公网IP再由物业路由器根据门牌号本地IP送到你家。理解这个区别后面看ipconfig的输出就不会迷糊了。私有地址段主要有三段记一下很有用地址段范围常见场景A类私有10.0.0.0 - 10.255.255.255大型企业内网、云服务器内网B类私有172.16.0.0 - 172.31.255.255中型网络、容器网络C类私有192.168.0.0 - 192.168.255.255家庭路由器、小型办公网2.2 端口号是“门牌号上的房间号”IP定位到一台机器端口号则定位到这台机器上的某个具体服务。一台电脑可以同时跑Web服务、数据库、远程桌面它们靠端口号区分。端口范围是 0 到 65535其中0-1023系统保留端口比如 80HTTP、443HTTPS、22SSH、3306MySQL 默认。1024-49151注册端口常见应用使用比如 8080、3389、6379。49152-65535动态/私有端口系统临时分配给客户端连接用。这里有个关键认知端口号是“监听”和“连接”两个概念。服务端是“监听”某个端口LISTENING等待别人来连客户端是“连接”到别人的端口ESTABLISHED。用netstat时一定要分清这两者否则会看得很乱。2.3 隧道适配器为什么让人一头雾水很多人敲完ipconfig会看到一堆名字里带“隧道适配器”的条目比如“隧道适配器 isatap.{xxx}”“隧道适配器 Teredo Tunneling Pseudo-Interface”后面还跟着一些看起来不像正常IP的地址。这些是系统为IPv6过渡技术自动创建的虚拟接口日常排查网络问题时基本可以忽略。它们出现的原因是早期从IPv4向IPv6过渡时需要一些兼容机制系统就自动建了这些虚拟通道。它们不是真实的物理网卡也不影响你正常上网。所以当你只想找本机真实IP时优先看“以太网适配器”或“无线局域网适配器”下面的IPv4地址隧道适配器直接跳过即可。这一点在搜索结果里被反复提到说明确实困扰了很多人。3. 用 ipconfig 查本地IP逐行拆解输出3.1 基础用法与参数选择打开CMDWinR 输入cmd回车敲下最基础的命令ipconfig它会列出所有网络适配器的简要信息。但实际排查时我更推荐用带参数的版本ipconfig /all/all会显示完整信息包括MAC地址、DHCP状态、DNS服务器、租约时间等。为什么推荐它因为排查网络问题时你往往不只需要IP还需要知道这个IP是静态配置的还是DHCP自动获取的、DNS是否正常。这些信息在/all里一目了然。如果你只想快速拿到IP不想看那一堆隧道适配器可以用ipconfig | findstr /i IPv4这条命令只筛选出包含“IPv4”的行输出干净利落。findstr是Windows下的文本筛选工具/i表示忽略大小写。这个组合我在批量处理或写脚本时用得非常多。3.2 输出内容逐行解读以ipconfig /all的一段典型输出为例以太网适配器 以太网: 连接特定的 DNS 后缀 . . . . . . . : localdomain 描述. . . . . . . . . . . . . . . : Realtek PCIe GbE Family Controller 物理地址. . . . . . . . . . . . . : 00-1A-2B-3C-4D-5E DHCP 已启用 . . . . . . . . . . . : 是 自动配置已启用. . . . . . . . . . : 是 IPv4 地址 . . . . . . . . . . . . : 192.168.1.100(首选) 子网掩码 . . . . . . . . . . . . : 255.255.255.0 默认网关. . . . . . . . . . . . . : 192.168.1.1 DNS 服务器 . . . . . . . . . . . : 192.168.1.1逐行看描述网卡型号确认你看的是哪块网卡。物理地址就是MAC地址全球唯一排查ARP相关问题时会用到。DHCP 已启用如果是“是”说明IP是路由器自动分配的重启后可能变如果是“否”说明是手动配置的静态IP。IPv4 地址这就是你要找的本地IP。后面的“(首选)”表示当前正在使用。子网掩码配合IP判断哪些地址在同一网段。255.255.255.0意味着前24位是网络位同网段地址是192.168.1.x。默认网关通常是路由器地址出局域网的门。DNS 服务器域名解析用的地址。提示如果看到169.254.x.x开头的地址说明DHCP获取失败系统自动分配了一个临时地址这时候网络是不通的需要检查网线或路由器。3.3 多网卡场景下该看哪一个笔记本同时插网线又连WiFi时ipconfig会列出多个适配器。这时候怎么判断哪个是“当前生效”的我的经验是看哪个适配器有默认网关。没有网关的适配器通常不是主出口。看IP地址是否在合理网段。169.254开头的基本是无效的。用ping测试。比如ping 192.168.1.1能通的那个就是当前活跃网卡。还有一个更直接的办法用route print看默认路由指向哪个接口或者用Get-NetIPConfigurationPowerShell直接看当前活动配置。不过对新手来说认准“有网关的那个IPv4”就够了。4. 用 netstat 查端口监听、连接与占用4.1 netstat 的核心参数组合netstat是查端口的主力工具。裸敲netstat输出太多太乱我常用的组合是netstat -ano三个参数的含义-a显示所有连接和监听端口。-n以数字形式显示地址和端口不做域名解析速度快。-o显示每个连接对应的进程PID。这个组合能让你看到“哪个端口被哪个进程占用了”是排查端口冲突的黄金命令。如果只想看监听状态的端口netstat -ano | findstr LISTENING如果想查特定端口比如8080netstat -ano | findstr :8080注意端口前面加冒号避免匹配到其他含8080的数字。4.2 读懂 netstat 输出的每一列典型输出协议 本地地址 外部地址 状态 PID TCP 0.0.0.0:135 0.0.0.0:0 LISTENING 1024 TCP 192.168.1.100:139 0.0.0.0:0 LISTENING 4 TCP 192.168.1.100:52341 93.184.216.34:443 ESTABLISHED 8820逐列解释协议TCP 或 UDP。TCP有连接状态UDP通常显示不了状态。本地地址IP:端口格式。0.0.0.0:135表示监听所有网卡的135端口192.168.1.100:139表示只监听这个特定IP。外部地址对监听端口来说通常是0.0.0.0:0对已建立的连接显示的是对端地址。状态LISTENING是监听ESTABLISHED是已连接TIME_WAIT是等待关闭CLOSE_WAIT是对方已关闭我方未关。PID进程ID配合任务管理器能找到具体是哪个程序。这里有个关键点0.0.0.0和127.0.0.1的区别。0.0.0.0表示监听所有网络接口外部机器可以连127.0.0.1只监听本机回环外部连不上。很多服务“本机能访问、别人访问不了”就是因为它只绑定了127.0.0.1。这个坑我踩过不止一次。4.3 从PID反查进程名拿到PID后怎么知道是哪个程序两种方法方法一任务管理器CtrlShiftEsc 打开切到“详细信息”标签按PID排序查找。方法二命令行一步到位tasklist | findstr 1024把1024换成你的PID即可。如果想更省事用PowerShellGet-Process -Id 1024直接显示进程名、路径、内存占用等信息。4.4 关闭占用端口的进程查到占用后要释放端口先确认这个进程能不能关。确认后taskkill /PID 1024 /F/F表示强制结束。如果是系统关键进程可能会失败这时候要谨慎别乱关系统服务。注意taskkill强制结束可能导致数据丢失尤其是数据库类进程。生产环境操作前务必确认。5. 验证端口通不通telnet 与替代方案5.1 telnet 的启用与使用telnet是验证端口连通性最经典的工具。但Windows默认没启用它需要先开启控制面板 → 程序 → 启用或关闭Windows功能 → 勾选“Telnet客户端”。启用后用法telnet 192.168.1.100 8080结果判断如果屏幕变黑或显示连接成功信息说明端口通。如果提示“无法打开到主机的连接”说明端口不通或被防火墙拦截。如果一直卡着不动可能是网络不通或对方没响应。telnet的局限是它只验证TCP不验证UDP而且连接成功后需要手动退出Ctrl] 然后输入 quit。5.2 PowerShell 的 Test-NetConnectionWin10/Win11 更推荐用PowerShell的Test-NetConnectionTest-NetConnection -ComputerName 192.168.1.100 -Port 8080输出里重点看TcpTestSucceededTrue就是通False就是不通。它比telnet更清晰还能同时显示ping结果和路由信息。我现在的习惯是优先用它telnet作为备选。5.3 端口不通的排查顺序端口不通时按这个顺序排查效率最高确认服务是否在监听netstat -ano | findstr :端口看有没有LISTENING。确认监听地址如果是127.0.0.1外部访问不了需要改成0.0.0.0。确认防火墙Windows防火墙可能拦了入站检查入站规则。确认网络可达先ping对方IPping不通说明网络层就有问题。确认中间设备路由器、交换机、云服务器安全组是否放行。这个顺序是从本机到网络、从内到外能快速定位问题在哪一层。6. 常见问题与排查技巧实录6.1 高频问题速查表问题现象可能原因排查方法ipconfig 显示169.254.x.xDHCP失败检查网线、路由器DHCP服务看到多个隧道适配器IPv6过渡接口忽略看以太网/WiFi适配器netstat 无输出权限不足或命令错误用管理员身份运行CMD端口显示LISTENING但连不上绑定127.0.0.1或防火墙拦截检查绑定地址和防火墙规则PID查不到进程进程已退出重新执行netstat确认telnet不是内部命令未启用Telnet客户端在Windows功能中启用端口被占用无法启动服务其他进程占用netstat -ano定位后taskkillWinR打不开cmd环境变量被改用完整路径 C:\Windows\System32\cmd.exe6.2 几个容易忽略的细节第一个坑netstat需要管理员权限才能看到所有进程的PID。普通权限下部分系统进程的PID会显示为空或无法关联。排查端口占用时养成用管理员身份运行CMD的习惯。第二个坑findstr匹配端口要加冒号。直接findstr 80会匹配到所有含80的数字比如8080、18080。写成findstr :80才准确。第三个坑TIME_WAIT 状态不是故障。连接关闭后进入TIME_WAIT是正常现象持续几十秒到几分钟。如果大量TIME_WAIT堆积才需要考虑调整系统参数。第四个坑Linux下命令不同。在CentOS、Rocky Linux等系统上查IP用ip addr或ifconfig查端口用netstat -tunlp或ss -tunlp。有些精简系统默认没装netstat需要先安装net-tools包。离线环境下要提前准备好rpm包。6.3 我的实操心得分享几个我平时用得最多的小技巧快速定位本机IPipconfig | findstr IPv4一行搞定。快速查端口占用netstat -ano | findstr :端口然后tasklist | findstr PID。快速验证连通Test-NetConnection IP -Port 端口比telnet直观。批量检查写个简单的bat脚本循环调用Test-NetConnection一次性检查多个端口。这些命令看起来简单但组合起来能解决大量日常问题。关键是要理解每个参数背后的含义而不是死记硬背。比如你知道-n是禁用域名解析就明白为什么它比不加-n快你知道-o是显示PID就明白为什么排查占用必须加它。最后说一个我自己的体会网络排查这件事工具只是表象真正重要的是分层思维。从物理层到应用层一层一层往上查先确认IP对不对再确认端口通不通最后确认服务正不正常。有了这个思路再多的命令也只是工具而已。
RELATED READING

延伸阅读

更多一线实战笔记与深度复盘,助您持续精进