原始 geoip 数据从何而来?

Where does raw geoip data come from?

这个问题是一个更具体的问题 asked here 的一般版本。但是,这些答案无法使用。

问题: geoIP数据的原始来源是什么?

许多网站会告诉我我的 IP 在哪里,但它们似乎都在使用来自不到 5 家公司的数据库(大多数使用的是 MaxMind 的数据库)。这些公司提供有限的免费版本的数据库,但我正在尝试确定他们使用什么作为源数据?

序言:我认为这对于 SO 网站来说实际上是一个非常有效的问题,因为理解这些东西是如何工作的对于理解如何在软件中使用这些数据集很重要。不过这个问题的答案比较复杂,而且充满了史料。

首先 - 值得一提的是,没有统一的原始 geoip 数据。这样的事情根本不存在。其次 - 这方面的数据来自多个资源,通常不可靠 and/or 过时。

要了解它是如何发展起来的,就需要知道互联网是如何诞生并在世界范围内传播的。简短摘要如下:

  1. IANA 是一个全球性 [非营利] 组织,负责管理 IP 块分配给区域组织:https://www.iana.org/numbers 这是根据请求和区域组织请求指定的块大小进行的
  2. 区域组织可以将这些 IP 块直接分配给 ISP 或分配给国家级子组织(然后由谁将其分配给 ISP)。
  3. ISP 分配 IP 地址给本地分支机构等

从上面你可以很容易地看到:

  1. 没有一个机构负责将 IP 块分配给这个或那个位置
  2. 决定如何(以及是否)发布有关哪个 IP 属于哪个位置的信息并不是统一的,而是每个组织决定如何(以及是否完全)发布该信息

以上所有造成了一大堆混乱。获取、聚合和排序这些数据需要大量的投入和长时间。这就是为什么最新和详细的 geoip 数据集是 commercial commodity.

无论谁挑战构建自己的数据集,都应该能够直接从最终用户 (ISP) 那里获得此信息,因为更高级别的组织不知道每个 IP 地址将分配到哪个位置。更高级别的组织仅 distribute 申请者之间的 IP 块(并保留一些保留以加快处理速度)并且是最低级别的组织决定哪个位置获得哪个 IP 地址,他们没有义务公开发布此信息。

更新: 要开始构建您自己的数据集,您可以从 this list of blocks and how they are assigned

开始