
简介这份文档面向希望了解网络连接排查方法的普通用户与入门学习者围绕如何借助Windows自带工具定位QQ聊天对象的IP地址展开属于偏实操型的技能资料。包内共1个docx文件压缩包约288KB内容以图文步骤形式呈现便于在电脑上直接打开对照操作。文档从任务管理器切入引导读者打开资源监视器再进入网络详细信息界面通过TCP连接列表观察远程地址并结合百度搜索对IP归属地进行查询同时穿插介绍了TCP协议、IP地址、远程地址等基础概念帮助读者在完成操作的同时理解背后的网络原理。目前已有371人学习适合想掌握网络连接查看思路、补充网络基础知识的读者参考也可作为日常排查网络问题的入门指引。1. 从资源监视器到 TCP 连接一份文档拆解 QQ 好友 IP 定位的完整链路很多人以为查好友 IP 得靠什么抓包神器或者命令行工具其实 Windows 自带的任务管理器里就藏了一条完整链路。这份《如何查看QQ好友的IP地址信息》文档核心思路是利用资源监视器的网络监控能力在 QQ 聊天过程中捕获 TCP 连接从远程地址字段提取对方 IP再通过公开的 IP 归属地查询服务定位到城市级别。整套流程不需要装任何第三方软件适合刚接触网络排查的运维新人、想了解 TCP 连接实际表现的后端开发者以及需要做基础网络诊断的桌面支持人员。文档本身只有两页但里面涉及的资源监视器、TCP 连接状态、远程地址这些概念恰恰是日常排障时最常打交道的底层机制。我把它拆开揉碎补上文档没写透的参数含义和实操边界让你照着做能复现遇到问题知道往哪查。2. 资源监视器与 TCP 连接为什么这条路径能拿到 IP2.1 资源监视器在网络排查中的定位任务管理器大家用得多了但很多人只盯着进程和性能两个标签页忽略了右下角那个“打开资源监视器”的入口。资源监视器本质上是 Windows 性能计数器的一个图形化封装它把网络活动按进程维度拆开让你能看到每个进程当前建立了哪些 TCP 连接、连到了哪个远程地址、发送接收了多少字节。这和 netstat 命令看到的东西是一回事但资源监视器把进程名和连接状态做了关联不用记 PID 再去反查对不熟悉命令行的读者更友好。文档里第一步到第三步的操作——右键任务栏打开任务管理器、切到性能标签、点开资源监视器——这条路径在 Windows 7 到 Windows 11 上都成立只是按钮位置略有差异。Win10 以后任务管理器默认是精简视图需要先点“详细信息”才能看到完整的性能标签页。资源监视器的网络标签页会列出所有有网络活动的进程QQ 的主程序通常显示为 QQ.exe 或者 QQProtect.exe具体取决于你装的版本。2.2 TCP 连接与远程地址的对应关系QQ 的聊天消息走的是腾讯自己的私有协议底层传输层用的是 TCP 或 UDP。文档里选择监控 TCP 连接是因为 TCP 是面向连接的协议连接建立后会在本地维持一个四元组本地地址、本地端口、远程地址、远程端口。资源监视器的 TCP 连接列表里“远程地址”那一列就是对方公网 IP 加上端口号。当你和好友互发消息时QQ 客户端会和腾讯服务器以及对方客户端之间建立多条连接其中直连的那条如果 NAT 打洞成功远程地址就会显示好友的真实公网 IP。这里有个关键点不是所有 TCP 连接都指向好友。QQ 同时会和腾讯的服务器保持长连接那些远程地址是腾讯机房的 IP。你需要通过“发送消息后观察哪条连接的字节数在变化”来区分。文档里强调“对话长一点方便监测器有效检测”原理就是让好友回复产生足够的数据包让对应连接的发送/接收计数明显跳动从而在列表里一眼锁定目标。2.3 操作步骤与参数勾选文档第四步到第五步要求在 TCP 连接列表里右键点击“IP 地址”列头选择“列”然后勾选接收、发送、总数。这一步是整个流程里最容易被忽略但最关键的筛选手段。默认视图只显示远程地址和状态你没法判断哪条连接是活跃的。勾上这三个计数列之后列表会多出三列数字你发一条消息观察哪一行的发送或接收数字在增加那一行的远程地址就是你要找的。# 如果你习惯用命令行等效操作是 netstat -ano | findstr QQ.exe # 输出示例 # TCP 192.168.1.100:54321 113.108.xx.xx:443 ESTABLISHED 12345 # 其中 113.108.xx.xx 就是远程地址12345 是 QQ.exe 的 PID上面这段命令是资源监视器操作的命令行替代方案。netstat -ano列出所有连接和对应的 PIDfindstr过滤出 QQ 相关的行。输出里的远程地址列就是资源监视器里看到的同一个东西。PID 那一列可以拿去任务管理器里反查是哪个进程。注意-n参数表示以数字形式显示地址和端口不加的话会尝试做反向 DNS 解析速度会慢很多。2.4 IP 归属地查询的边界拿到 IP 之后文档最后一步是打开百度搜索这个 IP 看归属地。这个做法本身没问题但你要清楚它的精度边界。IP 归属地库返回的是运营商分配给该 IP 段的注册地通常精确到城市但存在几种偏差一是移动网络出口 IP 可能归属到省会城市而不是用户实际所在城市二是如果对方用了代理或加速器你拿到的是代理节点的 IP三是部分 IP 库更新不及时新分配的 IP 段可能查不到。所以“查到 IP 就知道对方在哪”这个结论要打个折扣它只能给你一个大致范围不能当作精确定位。3. 从捕获到定位完整操作流程与参数详解3.1 环境准备与前置检查在开始之前先确认几件事。第一你的 QQ 是 PC 版手机版 QQ 不走同样的连接模型资源监视器抓不到。第二你和好友的聊天窗口要处于活跃状态最好先发几条消息确认双方在线。第三关闭其他占用网络的后台程序比如正在下载的浏览器、自动更新的 Steam减少干扰连接的数量。第四如果你在 NAT 后面绝大多数家庭宽带都是你看到的是好友的公网 IP不是你和他之间的内网地址这是正常的。资源监视器的打开路径再走一遍右键任务栏空白处 → 任务管理器 → 性能标签 → 右下角“打开资源监视器”。如果任务管理器是精简模式先点左下角“详细信息”展开。资源监视器窗口打开后切换到“网络”标签你会看到三个区域上部是网络活动的进程列表中部是 TCP 连接列表下部是侦听端口列表。我们只关心中间那块。3.2 捕获好友 IP 的实操步骤下面按文档的节奏走一遍每一步补上参数说明和观察要点。第一步在资源监视器的网络标签页里找到 TCP 连接区域。默认列有“映像”“PID”“本地地址”“本地端口”“远程地址”“远程端口”“状态”。右键点击任意列头选择“选择列”在弹出的列表里把“发送”“接收”“总数”三个勾上。这三个计数是字节数不是包数数字变化越快说明该连接越活跃。第二步打开 QQ 聊天窗口给目标好友发一条消息。发完之后立刻看资源监视器的 TCP 连接列表按“发送”列排序看哪一行的发送数字在跳动。通常 QQ.exe 对应的那条到腾讯服务器的连接会一直有数据但和好友直连的那条只在你发消息时才会有明显增长。第三步等好友回复。好友回复后观察“接收”列哪一行的接收数字突然增加那一行的远程地址就是好友的 IP。如果列表里有多条 QQ.exe 的连接优先看远程端口不是 443 和 80 的那些因为 443 通常是 HTTPS 到腾讯服务器的连接。# 如果你想把捕获到的 IP 做批量归属地查询可以用这个脚本 import requests import time def query_ip_location(ip): 查询 IP 归属地使用公开接口 url fhttps://whois.pconline.com.cn/ipJson.jsp?ip{ip}jsontrue try: resp requests.get(url, timeout5) data resp.json() return f{data.get(pro,)} {data.get(city,)} {data.get(addr,)} except Exception as e: return f查询失败: {e} # 替换成你从资源监视器里拿到的 IP target_ip 113.108.xx.xx print(query_ip_location(target_ip))这段脚本做的是把手工在百度搜索 IP 的动作自动化。query_ip_location函数调用了一个公开的 IP 归属地接口返回省份、城市和运营商信息。timeout5防止请求卡死try-except捕获网络异常。你拿到 IP 后把target_ip替换掉就能跑。注意这类公开接口有频率限制不要短时间内大量调用。3.3 连接状态与筛选技巧资源监视器的 TCP 连接列表里“状态”列的值有 ESTABLISHED、LISTENING、TIME_WAIT 等。你只关心 ESTABLISHED 的行因为只有已建立的连接才代表当前活跃的通信。LISTENING 是本机在监听端口TIME_WAIT 是连接已关闭但套接字还没释放这两种都不包含好友的实时 IP。另一个筛选技巧是按 PID 排序。QQ 主程序的 PID 在任务管理器的详细信息标签里能看到找到 QQ.exe 对应的 PID然后在资源监视器里只看这个 PID 的行能排除掉浏览器、微信等其他程序的干扰。如果 QQ 有多个进程比如 QQ.exe 和 QQProtect.exe优先看 QQ.exe聊天数据的收发走的是主进程。注意如果好友和你处于同一个局域网比如同一个公司网络你看到的远程地址可能是内网地址192.168.x.x 或 10.x.x.x这时候查归属地没有意义因为内网地址不参与公网路由。3.4 从 IP 到地理位置的查询方法拿到公网 IP 后查询归属地的方式有几种。文档里用的是百度搜索直接搜 IP 地址百度会在结果页顶部显示归属地卡片。这个方法最快但信息比较简略通常只到城市。更详细的方式是用专门的 IP 查询网站比如 ip138、ipip.net它们会显示运营商、AS 号、甚至区县级别的粗略位置。如果你需要批量查询或者集成到脚本里用上面那段 Python 代码调接口更合适。需要强调的是IP 归属地查询的精度受限于 IP 库的更新频率和运营商分配策略。同一个 IP 段可能被多个城市共用特别是移动宽带和部分二级运营商。你查到的“北京”可能只是该 IP 段在运营商那里的注册地不代表对方此刻就在北京。把 IP 归属地当作参考信息不要当作确凿证据。4. 避坑与排查为什么你抓不到好友的 IP4.1 现象TCP 连接列表里全是腾讯的 IP找不到好友的原因QQ 的聊天消息默认走腾讯服务器中转只有双方 NAT 类型允许打洞时才会建立直连。如果你的网络环境是对称 NAT或者好友那边限制了直连所有消息都经过服务器转发你自然看不到好友的真实 IP。解决先确认双方是否在同一网络环境下能直连。可以尝试用其他 P2P 工具测试 NAT 类型。如果确实无法直连资源监视器这条路走不通文档里的方法就不适用。这不是操作问题是网络拓扑的限制。4.2 现象发送/接收计数列勾选了但数字不变化原因资源监视器的刷新有延迟默认刷新间隔是 1 秒但计数更新可能滞后。另外如果你勾选列之后没有重新排序数字可能在列表底部你看不到的位置。解决勾选列之后点击“发送”或“接收”列头进行排序让活跃的连接排到最上面。发消息后等 2 到 3 秒再看不要频繁切换窗口。如果数字始终不动检查 QQ 是否在后台被限速或者进入了省电模式。4.3 现象查到的 IP 归属地显示的是腾讯机房原因你选错了连接。QQ 和腾讯服务器之间始终保持着长连接这些连接的远程地址是腾讯的 IP归属地会显示深圳、上海等腾讯机房所在地。好友的直连 IP 通常是一个普通的宽带 IP归属地显示为某个城市。解决在 TCP 连接列表里按远程端口筛选。腾讯服务器的连接通常走 443、80、8080 等标准端口而 P2P 直连的远程端口是随机的高位端口比如 50000 以上。优先看远程端口大于 1024 且不是 443 的行。4.4 现象好友回复后接收计数增加了但远程地址是内网 IP原因你和好友在同一个局域网内QQ 检测到直连条件满足走了内网直连。这时候远程地址是对方的内网 IP查归属地没有意义。解决这种情况说明你们物理位置很近不需要查归属地。如果你确实需要对方的公网 IP让好友断开 WiFi 用手机热点或者换一个不同网络的环境再试。4.5 现象资源监视器里看不到 QQ.exe 的任何连接原因QQ 可能以管理员权限运行而资源监视器没有以管理员权限打开导致看不到高权限进程的网络活动。或者 QQ 版本较新进程名不是 QQ.exe。解决关闭资源监视器右键以管理员身份重新打开。然后在任务管理器里确认 QQ 的实际进程名可能是 QQScLauncher.exe 或 QQExternal.exe。在资源监视器的进程列表里找到对应名称再观察。5. 进阶验证用 PowerShell 做连接快照与差异对比资源监视器是实时刷新的你很难同时对比“发消息前”和“发消息后”的连接变化。更可靠的做法是用 PowerShell 做两次连接快照然后取差集。这样能精确锁定哪条连接是在你发消息之后才出现的排除掉所有背景连接的干扰。# 第一次快照发消息之前执行 Get-NetTCPConnection -State Established | Where-Object { $_.OwningProcess -eq (Get-Process QQ).Id } | Select-Object RemoteAddress, RemotePort, CreationTime | Export-Csv -Path $env:TEMP\qq_before.csv -NoTypeInformation # 然后给好友发消息等对方回复 # 第二次快照收到回复后执行 Get-NetTCPConnection -State Established | Where-Object { $_.OwningProcess -eq (Get-Process QQ).Id } | Select-Object RemoteAddress, RemotePort, CreationTime | Export-Csv -Path $env:TEMP\qq_after.csv -NoTypeInformation # 对比两次快照找出新增的连接 $before Import-Csv $env:TEMP\qq_before.csv $after Import-Csv $env:TEMP\qq_after.csv Compare-Object $before $after -Property RemoteAddress, RemotePort | Where-Object { $_.SideIndicator -eq }这段脚本的核心逻辑是Get-NetTCPConnection获取当前所有已建立的 TCP 连接Where-Object按 QQ 进程的 PID 过滤Export-Csv把结果存成文件。两次快照之后用Compare-Object取差集SideIndicator为的行就是第二次快照新增的连接也就是你发消息之后才建立的连接。这条连接的远程地址就是好友的 IP。参数说明-State Established只取已建立状态的连接排除 LISTENING 和 TIME_WAIT。(Get-Process QQ).Id动态获取 QQ 进程的 PID避免硬编码。CreationTime列记录连接建立的时间可以用来判断连接的新旧。如果Get-Process QQ报错说明进程名不对换成Get-Process | Where-Object { $_.Name -like *QQ* }先确认。这个方法的优势在于可重复、可记录、可对比。你不需要盯着资源监视器的刷新跑两次脚本就能拿到确定的结果。我后来把这段脚本存成了一个 ps1 文件每次需要排查网络连接的时候直接跑比手工在 GUI 里翻列表快得多。从那以后我每次做网络排查都强制走一遍快照对比再也没出现过“盯着屏幕看半天找不到是哪条连接”的情况。希望帮到你。本文还有配套的精品资源点击获取