WhatRoute 的地理位置追踪功能是如何实现的?
WhatRoute 的地理追踪,本质是把 Traceroute 逐跳得到的路由器 IP 地址,交给一个 Geo-Location 服务去查询对应的地理位置,再把结果画到地图上。它并不自己维护 IP 归属地数据库,所以这条功能的可靠性完全取决于背后数据源的覆盖范围和更新频率。根据网站 Notes 中的作者自述,早期数据来自 CAIDA 的 NetGeo 数据库,该库停止维护后准确度持续下降,作者又无力为免费软件购买商业服务,只能另寻来源。
实现链路:从数据包到地图
一次地理追踪大致经过这几步:
- Traceroute 探测:向目标主机发送逐跳递增 TTL 的探测包,收集路径上每个路由器的 IP 地址。
- IP 反查地理位置:把每个 IP 交给 Geo-Location 服务,换回国家、城市或经纬度。
- 地图呈现:把各跳的位置按顺序连成一条路径,形成"数据包从本机到目的地"的地理视图。
WhatRoute 本身负责第 1 步和第 3 步,第 2 步依赖外部服务,这也是它与其他纯命令行 traceroute 工具的主要区别。
数据来源的演变
| 阶段 | 数据来源 | 状态 |
|---|---|---|
| 早期 | CAIDA 的 NetGeo IP-to-物理地址数据库 | 免费提供,作者经联系后获得访问权限 |
| 后期 | CAIDA 停止维护该免费库 | 数据"越来越不准确" |
| 之后 | 作者另寻其他来源 | 因无法为免费软件采购商业服务 |
作者在 Notes 中明确提到,当年 CAIDA 的 Kim Claffy 和 David Moore 给予了支持,但他怀疑对方并未预料到 WhatRoute 接入后会给服务器带来多大负载。这段历史说明:地理追踪的精度问题不是 WhatRoute 的实现缺陷,而是免费地理数据库本身的通病。
使用时该注意什么
- 把结果当作参考,而非精确坐标:IP 地理位置库对骨干网路由器、Anycast 地址、跨国运营商的判断经常偏差很大,城市级结果尤其不可靠。
- 路径中间跳的误差会被放大:某一跳定位错了,地图上的连线就会绕出奇怪的路线,这不代表真实流量走了那条路。
- 判断可靠性看数据源时效:如果某个 IP 的定位明显与常识不符,多半是数据库未更新,而不是探测出错。
- 需要高精度场景另找方案:对定位精度有硬性要求的用途,应使用有商业地理数据库支持的付费工具,而不是依赖免费软件内置的服务。
它适合谁
WhatRoute 的地理追踪适合做网络路径的直观理解与教学演示——看清数据包大致跨越了哪些地区、经过哪些运营商。它不适合作为网络取证、合规审计或精确位置判断的依据。如果你的需求只是"知道流量大概走了哪条国际链路",这个功能足够用;如果要求每一跳都准确到城市,就需要换用数据源更可靠的商业服务。