近期,微信、抖音、微博、公眾號等平臺,統統上線用戶 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 地址,也還是能找到精確位置!
X 關閉
X 關閉