一文搞懂全網(wǎng)上線的 IP 屬地功能
近期,微信、抖音、微博、公眾號(hào)等平臺(tái),統(tǒng)統(tǒng)上線用戶 IP 屬地功能,簡(jiǎn)單的說,就是在互聯(lián)網(wǎng)發(fā)文、發(fā)言時(shí),都會(huì)帶上自己的地址信息。舉個(gè)栗子,在公眾號(hào)發(fā)文、在公眾號(hào)留言,都會(huì)帶上地址。
正所謂,外行看熱鬧,內(nèi)行看門道。那么這個(gè)功能到底是如何實(shí)現(xiàn)的?背后的技術(shù)原理是啥?怎么查別人的地址信息呢?
IP 屬地原理
眾所周知,接入互聯(lián)網(wǎng),需要有公網(wǎng) IP 地址。公網(wǎng) IP 地址由 ISP 提供。然而 ISP 只是二道販子,全球 IP 地址一級(jí)一級(jí)分配下來的。IANA 管理所有的 IP 地址,它大手一揮,把所有可用的 8 位網(wǎng)段的地址分配給了五個(gè) RIR 。這五個(gè) RIR 分別是 ARIN 、RIPE NCC 、APNIC 、LACNIC 、AfriNIC 。
- RIR:區(qū)域互聯(lián)網(wǎng)地址注冊(cè)機(jī)構(gòu)
- ARIN:負(fù)責(zé)北美地區(qū)業(yè)務(wù)
- RIPE NCC:負(fù)責(zé)歐洲地區(qū)業(yè)務(wù)
- APNIC:負(fù)責(zé)亞太地區(qū)業(yè)務(wù)
- LACNIC:負(fù)責(zé)拉丁美洲地區(qū)業(yè)務(wù)
- AfriNIC:負(fù)責(zé)非洲地區(qū)業(yè)務(wù)
IPv4 地址一共 256 個(gè) 8 位網(wǎng)段,還需要排除私有地址、Loopback 地址、保留地址等,可用的 8 位網(wǎng)段只有兩百個(gè)左右。而一個(gè) 8 位網(wǎng)段有 1677 萬多可用 IP 地址,供 RIR 再次分配。全球 IP 地址分配詳情,可在下面鏈接找到:
- https://www.iana.org/assignments/ipv4-address-space/ipv4-address-space.xhtml
從 IANA 地址分配表來看,我們可以通過 IP 地址的前八位,判斷出 IP 地址屬于哪個(gè) RIR ,也就知道 IP 地址的位置范圍。但是這個(gè)范圍實(shí)在太大了,相當(dāng)于全球范圍的五分之一。想要更精確的位置,可以往下看 RIR 地址分配表,就能確定 IP 地址屬于哪個(gè)國(guó)家或地區(qū)。以 APNIC 舉例,通過下面鏈接查看 APNIC 地址分配詳情:
- http://ftp.apnic.net/apnic/stats/apnic/delegated-apnic-latest
表格里詳細(xì)的記錄了 APNIC 所有地址的分配情況,表格格式分為是注冊(cè)機(jī)構(gòu)、國(guó)家/地區(qū)代碼、類型、起始地址、數(shù)量、分配日期、狀態(tài)。通過這個(gè)表格,就能發(fā)現(xiàn) IP 地址屬于哪個(gè)國(guó)家或地區(qū)。但是 IP 屬地功能,顯示的可是省份或直轄市,那還要往下挖。
這五個(gè) RIR 分別管理不同區(qū)域,它們也不直接給用戶分配 IP 地址,而是分配給 NIR ,NIR 再分配給 LIR ,LIR 最后分配給 ISP 或最終用戶。CNNIC 是中國(guó)唯一的 NIR ,也是 APNIC 下面的 NIR 。中國(guó)的 ISP / IDC / ICP / 企事業(yè)單位都是通過 CNNIC 申請(qǐng) IP 地址。
- NIR:國(guó)家級(jí)互聯(lián)網(wǎng)注冊(cè)機(jī)構(gòu)
- LIR:本地互聯(lián)網(wǎng)注冊(cè)機(jī)構(gòu)
- ISP:互聯(lián)網(wǎng)服務(wù)提供商
CNNIC 官網(wǎng)可以查到 IP 地址的位置信息,但是位置信息不一定都能精確到省份或直轄市級(jí)。以我自己的 IP 地址(120.229.6.109)為例:
- http://www.cnnic.net.cn/
查詢結(jié)果是中國(guó)移動(dòng),位置范圍是國(guó)家或地區(qū)級(jí),而不是省份或直轄市級(jí)。因?yàn)椴樵儼l(fā)現(xiàn) 120.229.6.109 屬于 120.190.0.0 - 120.255.255.255 范圍中,也就是 120.192.0.0/10 網(wǎng)段,顯示的就是這個(gè)網(wǎng)段的信息。
而 58.60.110.20 又可以查到具體的省份信息:廣東省。根本原因是,申請(qǐng) IP 網(wǎng)段時(shí),有些已經(jīng)確定了使用的省份/直轄市,還有些只確定了使用的國(guó)家/地區(qū),后面根據(jù)需求,ISP 再對(duì) IP 網(wǎng)段進(jìn)行劃分。這時(shí),我們就可以使用另一個(gè)網(wǎng)絡(luò)參數(shù),對(duì) IP 地址進(jìn)行定位,那就是 ASN ,ASN 是網(wǎng)絡(luò)上的實(shí)際值。
互聯(lián)網(wǎng)是一個(gè)巨大的網(wǎng)絡(luò),它由數(shù)十萬個(gè)叫做 AS(自治系統(tǒng))的網(wǎng)絡(luò)組成。AS 是由 ISP 、區(qū)域網(wǎng)絡(luò)等管理的大型網(wǎng)絡(luò),也是一個(gè)大型路由器池。每個(gè) AS 都有自己的 ASN(自治系統(tǒng)編號(hào)),是一個(gè) 16 比特的 AS 編號(hào),方便識(shí)別和區(qū)分。AS 包含若干子網(wǎng),還包含位置信息。還是以我自己的 IP 地址(120.229.6.109)為例:
- https://bgp.he.net/
查看到 120.229.6.109 有兩個(gè) ASN ,一個(gè)是 AS9808 ,包含 120.192.0.0/10 網(wǎng)段,屬地為中國(guó)。另一個(gè)是 AS56040 ,包含 120.229.0.0/16 ,屬地為中國(guó)廣東。更精準(zhǔn)的定位,需要按照最長(zhǎng)匹配原則,選擇最長(zhǎng)匹配的網(wǎng)段,也就是選擇 120.229.0.0/16 的位置信息,即中國(guó)廣東。
位置定位
如果要具體的位置信息,精確到街道的那種,就要找 ISP 提供,ISP 有完整的 IP 地址位置信息的,通過 IP 地址可以定位到家庭住址、工作單位、行動(dòng)軌跡等。當(dāng)然,這些信息是屬于個(gè)人隱私,ISP 不會(huì)對(duì)外公布,泄露隱私可是違法行為。不過,我們還可以通過網(wǎng)上公開的 IP 地址庫,定位到市級(jí)或區(qū)級(jí)的位置信息。仍然是以自己的 IP 地址為例:
- https://ip.taobao.com/ipSearch
結(jié)果顯示為廣東省,淘寶 IP 地址庫還提供了 API 接口,可以直接程序調(diào)用,自動(dòng)顯示 IP 屬地。但沒有城市信息,更準(zhǔn)確的位置信息,可以用下面的網(wǎng)站查詢:
- https://www.ip138.com/
查詢結(jié)果為廣東省深圳市福田區(qū),深圳市是正確的,福田區(qū)是錯(cuò)誤的。IP 地址庫都有這類問題,市級(jí)位置信息準(zhǔn)確率蠻高,而區(qū)級(jí)位置信息是不太準(zhǔn)的。這里,我們可以發(fā)現(xiàn),不借助 ISP 的信息,IP 地址只能準(zhǔn)確的定位到城市位置。其實(shí),除了 IP 地址外,還有許多其它定位的技術(shù),比如 GPS 定位、WiFi 定位、藍(lán)牙定位、大數(shù)據(jù)定位等,精度更準(zhǔn)、準(zhǔn)確率更高!所以,即使屏蔽了 IP 地址,也還是能找到精確位置!