近期,微信、抖音、微博、公众号等平台,统统上线用户 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 地址。