大家好,我是对白。
最近各大平台都上线了 IP 属地,对于程序员来说,大家都知道这是什么。
但还是有很多朋友不太熟悉,所以我开个文章来说一说。
IP,就是 Internet Protocol,意思是互联网协议。
你在互联网的每一个访问,都是从一个「IP地址」到另外一个「IP地址」,从协议的原理决定了,通讯的双方必然知道对方的IP地址。因此,你访问网站,网站就一定知道你访问它时使用的IP地址,这个功能与定位权限没有关系。
IP地址有多少个呢?目前广泛使用的IPV4协议,使用了32位数据存储,地址一共有42亿多个,而且这其中有一部分还属于无效地址,实际可用地址大约30亿的水平。
很显然,IP地址甚至不够全球人口使用的。
所以,IP地址被分配给机构与组织,而并非分配给个人。
在国内,最常见的拥有IP地址的机构与组织,是运营商(移动联通电信)跟学校(大学),当然,还有一些机构也拥有IP地址,此处不一一提起。
拥有IP地址的机构与组织,自行决定如何分发IP,我们知道,总IP其实是不够用的,所以实际上在大家使用的时候,需要动态分配,用完了要收回。当然,这只是策略之一。总之,无论如何,IP地址由机构所有,而机构如何将IP地址分配给使用者,这一点并无确定的规则。
在大学内,有的学校可以给每个寝室都分配到固定IP。有的学校则动态分配。而在社会上,无论我们安装家庭宽带,还是使用手机数据流量上网,都是动态分配IP。
那么,IP属地的信息从哪里来?
答案:IP属地的信息,取决于当初这个IP分配给了哪个机构,而这个机构的属地,就成为IP的属地。
IP属地信息有没有可能与实际访问者地址不同?
当然可以,最直接的,一个机构可以自行分配自有IP的使用权,因此,一个拥有IP的河北机构,如果在北京分部也使用自己的IP,但这个机构是登记到河北的,那么这个IP的属地最终会呈现为河北。
如果一个公司,具备遍布全国的内网,但访问外网的时候统一都使用总公司的IP访问,那么最终,这个公司所有人上网呈现的IP属地,都会是总公司的属地。——这意味着,IP属地是从外网第一跳开始计算的,如果公司存在庞大的内网,那么内网中的具体地址,并不会体现到外网访问中。
以上,是IP属地不准确之一。
另外一种情况,就是对于个人使用手机或者家庭宽带上网的情况,这种时候,你的IP是运营商临时租借给你的。你连接上了哪个运营商,你就会是哪个运营商的属地。
还用那个北京人作为例子,一个经典笑话是某个北京人买了房,结果乔迁新居打开手机一看:河北移动欢迎你。
手机基站有覆盖的范围,而通常来说,一个手机所在的位置,可能在不同方向存在两三个不同基站,如果连接两个基站的信号都差不多,那么手机实际连接的基站可能在两个基站之间不断切换。如果你的住处的移动网络,恰好同时被北京移动与河北移动覆盖。——结果就是,你在知乎发帖,有时显示IP属地北京,有时显示IP属地河北。
是的,IP属地显示的是你当前上网机构的属地,而移动设备可以在不同时间连上不同的上网机构,这导致你的IP属地不断变化。
以上,是IP属地不准确之二。
当然,还有另外一种,导致IP属地变化的情况,我将这种情况简单的说成「服务器中转」。
服务器中转的意思,是你的网络请求并非由自己发起,而是由你请求网络上某一台服务器发起,你委托它发起访问另外一个网站,然后将访问的结果转发给你,此时在被访问网站看起来,IP属地就是「用来访问的服务器的IP属地」。
比如,steam 玩家常用的方式是自己连接上 土耳其 的服务器,然后用土耳其的服务器访问 steam ,这样让 steam 服务器看起来认为你的 IP 属地是土耳其。——当然,类似的方法也可以让知乎认为你在土耳其。由于这种方法需要给服务器增加额外的负担以及流量,所以通常这些服务都是付费的。
最后,给几个结论:
- IP地址本身并无定位功能,只不过 IP 地址作为一个有限数量的资源,是固定登记分配给各个机构与组织的。
- 各机构与组织登记过自己使用的IP地址段,IP地址数据库是根据最初的登记,获得IP地址被分配的机构,然后来推测IP地址的大致城市。
- 个人不拥有IP地址,通常只是临时租用某个机构与组织的IP,你的IP属地取决于你当前上网租用了哪个机构与组织的IP地址。
- 更换个人上网方式可能更换IP属地,这往往意味着额外的付费。
关于IP属地,需要说的就是这么多。