一文搞懂全网上线的 IP 属地功能

网络 通信技术
众所周知,接入互联网,需要有公网 IP 地址。公网 IP 地址由 ISP 提供。然而 ISP 只是二道贩子,全球 IP 地址一级一级分配下来的。

近期,微信、抖音、微博、公众号等平台,统统上线用户 IP 属地功能,简单的说,就是在互联网发文、发言时,都会带上自己的地址信息。举个栗子,在公众号发文、在公众号留言,都会带上地址。

正所谓,外行看热闹,内行看门道。那么这个功能到底是如何实现的?背后的技术原理是啥?怎么查别人的地址信息呢?

IP 属地原理

众所周知,接入互联网,需要有公网 IP 地址。公网 IP 地址由 ISP 提供。然而 ISP 只是二道贩子,全球 IP 地址一级一级分配下来的。IANA 管理所有的 IP 地址,它大手一挥,把所有可用的 8 位网段的地址分配给了五个 RIR 。这五个 RIR 分别是 ARIN 、RIPE NCC 、APNIC 、LACNIC 、AfriNIC 。

  • RIR:区域互联网地址注册机构
  • ARIN:负责北美地区业务
  • RIPE NCC:负责欧洲地区业务
  • APNIC:负责亚太地区业务
  • LACNIC:负责拉丁美洲地区业务
  • AfriNIC:负责非洲地区业务

IPv4 地址一共 256 个 8 位网段,还需要排除私有地址、Loopback 地址、保留地址等,可用的 8 位网段只有两百个左右。而一个 8 位网段有 1677 万多可用 IP 地址,供 RIR 再次分配。全球 IP 地址分配详情,可在下面链接找到:

  • https://www.iana.org/assignments/ipv4-address-space/ipv4-address-space.xhtml

从 IANA 地址分配表来看,我们可以通过 IP 地址的前八位,判断出 IP 地址属于哪个 RIR ,也就知道 IP 地址的位置范围。但是这个范围实在太大了,相当于全球范围的五分之一。想要更精确的位置,可以往下看 RIR 地址分配表,就能确定 IP 地址属于哪个国家或地区。以 APNIC 举例,通过下面链接查看 APNIC 地址分配详情:

  • http://ftp.apnic.net/apnic/stats/apnic/delegated-apnic-latest

表格里详细的记录了 APNIC 所有地址的分配情况,表格格式分为是注册机构、国家/地区代码、类型、起始地址、数量、分配日期、状态。通过这个表格,就能发现 IP 地址属于哪个国家或地区。但是 IP 属地功能,显示的可是省份或直辖市,那还要往下挖。

这五个 RIR 分别管理不同区域,它们也不直接给用户分配 IP 地址,而是分配给 NIR ,NIR 再分配给 LIR ,LIR 最后分配给 ISP 或最终用户。CNNIC 是中国唯一的 NIR ,也是 APNIC 下面的 NIR 。中国的 ISP / IDC / ICP / 企事业单位都是通过 CNNIC 申请 IP 地址。

  • NIR:国家级互联网注册机构
  • LIR:本地互联网注册机构
  • ISP:互联网服务提供商

CNNIC 官网可以查到 IP 地址的位置信息,但是位置信息不一定都能精确到省份或直辖市级。以我自己的 IP 地址(120.229.6.109)为例:

  • http://www.cnnic.net.cn/

查询结果是中国移动,位置范围是国家或地区级,而不是省份或直辖市级。因为查询发现 120.229.6.109 属于 120.190.0.0 - 120.255.255.255 范围中,也就是 120.192.0.0/10 网段,显示的就是这个网段的信息。

而 58.60.110.20 又可以查到具体的省份信息:广东省。根本原因是,申请 IP 网段时,有些已经确定了使用的省份/直辖市,还有些只确定了使用的国家/地区,后面根据需求,ISP 再对 IP 网段进行划分。这时,我们就可以使用另一个网络参数,对 IP 地址进行定位,那就是 ASN ,ASN 是网络上的实际值。

互联网是一个巨大的网络,它由数十万个叫做 AS(自治系统)的网络组成。AS 是由 ISP 、区域网络等管理的大型网络,也是一个大型路由器池。每个 AS 都有自己的 ASN(自治系统编号),是一个 16 比特的 AS 编号,方便识别和区分。AS 包含若干子网,还包含位置信息。还是以我自己的 IP 地址(120.229.6.109)为例:

  • https://bgp.he.net/

查看到 120.229.6.109 有两个 ASN ,一个是 AS9808 ,包含 120.192.0.0/10 网段,属地为中国。另一个是 AS56040 ,包含 120.229.0.0/16 ,属地为中国广东。更精准的定位,需要按照最长匹配原则,选择最长匹配的网段,也就是选择 120.229.0.0/16 的位置信息,即中国广东。

位置定位

如果要具体的位置信息,精确到街道的那种,就要找 ISP 提供,ISP 有完整的 IP 地址位置信息的,通过 IP 地址可以定位到家庭住址、工作单位、行动轨迹等。当然,这些信息是属于个人隐私,ISP 不会对外公布,泄露隐私可是违法行为。不过,我们还可以通过网上公开的 IP 地址库,定位到市级或区级的位置信息。仍然是以自己的 IP 地址为例:

  • https://ip.taobao.com/ipSearch

结果显示为广东省,淘宝 IP 地址库还提供了 API 接口,可以直接程序调用,自动显示 IP 属地。但没有城市信息,更准确的位置信息,可以用下面的网站查询:

  • https://www.ip138.com/

查询结果为广东省深圳市福田区,深圳市是正确的,福田区是错误的。IP 地址库都有这类问题,市级位置信息准确率蛮高,而区级位置信息是不太准的。这里,我们可以发现,不借助 ISP 的信息,IP 地址只能准确的定位到城市位置。其实,除了 IP 地址外,还有许多其它定位的技术,比如 GPS 定位、WiFi 定位、蓝牙定位、大数据定位等,精度更准、准确率更高!所以,即使屏蔽了 IP 地址,也还是能找到精确位置!

责任编辑:武晓燕 来源: 网络技术平台
相关推荐

2024-01-30 09:58:00

IP属地在线服务

2024-10-28 00:00:03

IP属地地址

2022-03-24 08:51:48

Redis互联网NoSQL

2024-04-12 12:19:08

语言模型AI

2021-03-22 10:05:59

netstat命令Linux

2023-09-08 08:20:46

ThreadLoca多线程工具

2023-09-15 12:00:01

API应用程序接口

2020-05-15 16:37:13

PowerBI数据分析

2023-07-04 08:56:07

指针类型Golang

2022-05-05 16:47:24

Docker网络空间容器

2022-08-15 10:47:01

IP属地互联网

2022-05-10 08:59:25

IP网络

2023-05-22 13:27:17

2023-03-06 21:29:41

mmap技术操作系统

2020-12-07 06:19:50

监控前端用户

2021-03-04 00:09:31

MySQL体系架构

2020-09-03 06:35:44

Linux权限文件

2021-02-28 20:53:37

Cookie存储浏览器

2023-09-02 21:27:09

2022-07-15 08:16:56

Stream函数式编程
点赞
收藏

51CTO技术栈公众号