数据分析该知道的IP地址知识

标签: 数据 术→技巧 IP | 发表时间:2021-08-25 21:45 | 作者:钱魏Way
出处:https://www.biaodianfu.com

第一次接触到IP,还是在十多年前使用统计系统时,当时的统计系统中有个指标是IP地址。即记录每天有多少不同的IP访问您的网站,在后来是自己搭建统计系统时涉及到对IP地址省份、城市、区域的解析。最近在推进风控项目时又有遇到,所以抽时间把相关的知识点做下简单的整理。

什么是IP地址?

IP地址(英语:IP Address,全称Internet Protocol Address)。当设备连接网络,设备将被分配一个IP地址,用作标识。通过IP地址,设备间可以互相通讯,如果没有IP地址,我们将无法知道哪个设备是发送方,无法知道哪个是接收方。IP地址有两个主要功能:标识设备或网络 和 寻址(英语:location addressing)。常见的IP地址分为 IPv4 与 IPv6 两大类,IP地址由一串数字组成。IPv4 由十进制数字组成,并以点分隔,如:172.16.254.1;IPv6 由十六进制数字组成,以冒号分割,如:2001:db8:0:1234:0:567:8:1。这里主要讲解的是IPv4。

IP地址表示方法:

  • 点分十进制(最常用的表示方法):11.3.31
  • 二进制记法:10000000 00001011 00000011 00011111
  • 十六进制记法:0X810B0BEF

在对IP进行数据存储的时候,我们经常会将IP地址的int型数值。

import ipaddress

print(int(ipaddress.IPv4Address('36.154.120.82')))
print(str(ipaddress.IPv4Address(614103122)))

IP地址分类

每一类地址都由两个固定长度的字段组成:

  • 一个字段是网络号 net-id,它标志主机(或路由器)所连接到的网络
  • 一个字段则是主机号 host-id,它标志该主机(或路由器)

由于近年来已经广泛使用无分类 IP 地址进行路由选择,A 类、B 类和 C 类地址的区分已成为历史[RFC 1812]。所以这里不用过于记忆,只需了解 IP 分类的最初标准。

子网掩码

子网掩码必须结合IP地址一起使用,子网掩码的作用是将某个IP地址划分成网络地址和主机地址两部分。并且子网掩码设置不是任意的,如果设置过大(范围扩大),有可能因为错误的判断使数据不能正确到达目的主机,导致网络传输错误;如果网掩码设置得过小,会增加缺省网关的负担,造成网络效率下降。

因此,如果网络的规模不超过254台主机,采用“255.255.255.0”作为子网掩码就可以了,现在多数的局域网都不会超过这个数字,所以这是最常用的IP地址子网掩码。

当一个网段的掩码为255.255.255.0的时候,通常IP地址的最后一位不可以是255或0。因为0是网段的网络地址,而255是网段的广播地址,不能分配给主机。那什么情况下可以是255或0,假设一个网段为155.23.0.0,它的掩码是255.255.254.0,那它的主机可用地址范围是155.23.0.1到155.23.1.254,即155.23.1.0和155.23.0.255这两个地址是可用的。

子网掩码决定了可用的主机数量有多少,以及ip是否在同一个网段,举两个例子:

  • 以网段168.0.0为例:当子网掩码为255.255.255.0时,可用IP为192.168.0.1-192.168.0.254(255为广播地址),子网掩码为255.255.0.0时,可用IP为192.168.0.0-192.168.255.254。
  • 以168.10.1和192.168.100.1为例:当子网掩码为255.255.255.0时,他们不在一个网段,子网掩码为255.255.0.0时,他们在同一个网段。所以多个IP地址是否在同一个网段以及该网段有多少个可用的IP地址,由子网掩码决定。

无分类编址CIDR

一个IP地址包含两部分:标识网络的前缀和紧接着的在这个网络内的主机地址。在之前的分类网络中,IP地址的分配把IP地址的32位按每8位为一段分开。这使得前缀必须为8,16或者24位。因此,可分配的最小的地址块有256(24位前缀,8位主机地址,2^8=256)个地址,而这对大多数企业来说太少了。大一点的地址块包含65536(16位前缀,16位主机,2^16=65536)个地址,而这对大公司来说都太多了。这导致不能充分使用IP地址和在路由上的不便,因为大量的需要单独路由的小型网络(C类网络)因在地域上分得很开而很难进行聚合路由,于是给路由设备增加了很多负担。

无类别域间路由是基于可变长子网掩码(VLSM)来进行任意长度的前缀的分配的。在RFC 950(1985)中有关于可变长子网掩码的说明。CIDR包括:

  • 指定任意长度的前缀的可变长子网掩码技术。遵从CIDR规则的地址有一个后缀说明前缀的位数,例如:168.0.0/16。这使得对日益缺乏的IPv4地址的使用更加有效。
  • 将多个连续的前缀聚合成超网,以及,在互联网中,只要有可能,就显示为一个聚合的网络,因此在总体上可以减少路由表的表项数目。聚合使得互联网的路由表不用分为多级,并通过VLSM逆转“划分子网”的过程。
  • 根据机构的实际需要和短期预期需要而不是分类网络中所限定的过大或过小的地址块来管理IP地址的分配的过程。

CIDR用可变长子网掩码 (VLSM,Variable Length Subnet Masking),根据各人需要来分配IP地址,而不是按照一个全网络约定的规则。所以,网络/主机的划分可以在地址内的任意位置进行。这个划分可以是递归进行的,即通过增加掩码位数,来使一部分地址被继续分为更小的部分。整个互联网现在都在使用CIDR/VLSM网络地址。除此之外,CIDR也应用在其他方面,尤其是大型私人网络。在普通大小的局域网里则较少应用,因为这些局域网一般使用私有网络。

如何理解可变长子网掩码?假设IP地址是192.168.1.0~192.168.1.255,使用255.255.255.0即可实现。但如果现在需要将这些IP分为四份,分配给不同的网络:

  • 168.1.0-192.168.1.63
  • 168.1.64-192.168.1.127
  • 168.1.128 -192.168.1.191
  • 168.1.192-192.168.1.255

用可变长子网掩码表示就是:

  • 168.1.0/26
  • 168.1.64/26
  • 168.1.128/26
  • 168.1.192/26

 

这里的/26,代表的是11111111-11111111-11111111-11000000,即26个1,转化为IP就是255.255.255.192。

192.168.1.0对应的二进制是:11000000.10101000.00000001.00000000,在子网掩码下,前面26位保持不变,终止IP为:11000000.10101000.00000001.00111111,即192.168.1.63

内网IP与公网IP

内网IP地址、外网IP地址这个概念并不是固定的,而是相对的。如果用私有IP、公网IP或者局域网IP、互联网IP来理解就容易多了。看网络习惯书籍无法理解很多原因是因为教科书太古老,不与时俱进造成的。几乎所有的教科书都会告诉大家私有IP有3种:A类10.0.0.0~10.255.255.255,B类172.16.0.0~172.31.255.255,C类192.168.0.0~192.168.255.255。

RFC1918 规定区块名 IP地址区块 IP数量 分类网络 说明 最大CIDR区块 (子网掩码) 主机端位长
24位区块 10.0.0.0 – 10.255.255.255 16,777,216 单个A类网络 10.0.0.0/8 (255.0.0.0) 24位
20位区块 172.16.0.0 – 172.31.255.255 1,048,576 16个连续B类网络 172.16.0.0/12 (255.240.0.0) 20位
16位区块 192.168.0.0 – 192.168.255.255 65,536 256个连续C类网络 192.168.0.0/16 (255.255.0.0) 16位

事实上远远不止:

Address Block                    Name                              RFC                       
0.0.0.0/8                        "This host on this network"       [RFC1122], section 3.2.1.3
10.0.0.0/8                       Private-Use                       [RFC1918]                 
100.64.0.0/10                    Shared Address Space              [RFC6598]                 
127.0.0.0/8                      Loopback                          [RFC1122], section 3.2.1.3
169.254.0.0/16                   Link Local                        [RFC3927]                 
172.16.0.0/12                    Private-Use                       [RFC1918]                 
192.0.0.0/24[2]                  IETF Protocol Assignments         [RFC6890], section 2.1    
192.0.0.0/29                     IPv4 Service Continuity Prefix    [RFC7335]                 
192.0.0.8/32                     IPv4 dummy address                [RFC7600]                 
192.0.0.9/32                     Port Control Protocol Anycast     [RFC-ietf-pcp-anycast-08] 
192.0.0.170/32, 192.0.0.171/32   NAT64/DNS64 Discovery             [RFC7050], section 2.2    
192.0.2.0/24                     Documentation (TEST-NET-1)        [RFC5737]                 
192.31.196.0/24                  AS112-v4                          [RFC7535]                 
192.52.193.0/24                  AMT                               [RFC7450]                 
192.88.99.0/24                   Deprecated (6to4 Relay Anycast)   [RFC7526]                 
192.168.0.0/16                   Private-Use                       [RFC1918]                 
192.175.48.0/24                  Direct Delegation AS112 Service   [RFC7534]                 
198.18.0.0/15                    Benchmarking                      [RFC2544]                 
198.51.100.0/24                  Documentation (TEST-NET-2)        [RFC5737]                 
203.0.113.0/24                   Documentation (TEST-NET-3)        [RFC5737]                 
240.0.0.0/4                      Reserved                          [RFC1112], section 4      
255.255.255.255/32               Limited Broadcast                 [RFC919], section 7 

另外,部分阿里云服务器使用路由跟踪显示的defense.gov (DoD Network) IP地址,其实是阿里使用了美国国防部的公网IP当内网IP用。原因是无法从公网访问美国国防部的这些IP段,所以不会造成IP混乱。

IP地址匮乏问题

中国所获得的IPv4地址情况:

  • 中国大陆IPv4地址总数为74,391,296个,合4A+111B+31C
  • 中国台湾IPv4地址总数为16,280,064个,合248B+106C
  • 中国香港IPv4地址总数为06,288,640个,合95B+245C
  • 中国澳门IPv4地址总数为00,144,640个,合2B+53C

不管是电脑、手机号是网站服务器都需要使用IP,以上的IP远远不够。这也就导致了我们再也不能像十几年前一样通过简单的统计IP量来统计用户量。

3G/4G网络下的IP地址

用手机本身的流量上网的话,IP是随着你手机信号连接的基站的变化而变化的。手机从基站接入,传递数据给基站,然后基站传递给上层BSC,PCU从中剥离出分组业务数据,传递给SGSN,最后通过SGSN经由GGSN这个网关将数据汇入到茫茫internet中。

手机使用3g/4g信号上网,在同一区域只有1个IP,如果您去了别的城市用3g/4g信号上网则会变动IP。通过手机数据流量上网,即使是在异地,也会分配手机卡归属地的IP地址。比如手机卡归属地是北京,到了山东之后连接数据流量,这时候的IP地址还会是北京的IP。无论手机漫游到天涯海角,手机漫游所在地的SGSN根据手机号码,可以查询到手机的归属地,还可以查询到该归属地的GGSN的IP地址,然后使用GTP(GPRS Tunnel Protocol)在漫游地与归属地建立一个GTP隧道,如下所示:漫游地SGSN<——- GTP隧道—— > 归属地GGSN

漫游地把该手机所有的数据流量统统使用该GTP隧道,流到归属地的GGSN,归属地再剥离掉GTP隧道头,得到用户的报文,再做进一步的处理:

  • 如果是手机请求分配IP地址等参数,GGSN将IP地址等参数返回给手机用户,通过GTP隧道传输
  • 如果是访问互联网的流量,GGSN完成NAT,将用户流量发送到Internet

这样做的好处是,所有用户的数据流量都经过归属地的计费系统,方便统一计费。

举例:苏州移动用户的无线网络IP均为:

  • 136.67.48~117.136.67.95
  • 136.67.160~117.136.255

无论苏州移动的用户漫游到哪里,他的IP永远是上面几个。(由于目前已经取消了漫游费,所以手机归属地并不一定是常住地)

宽带/ADSL网络下的IP地址

以前,ADSL或宽带都是在连接时都会分配公网IP,但随着IPv4缺口的变大,很多运营商都不再提供公网IP,类似长城光缆这种二级运营商只给内网IP。目前联通和电信也开始只提供内网IP,然后NAT后大家共享一个公网地址。而通常运营商NAT后分配的地址为:100.64.0.0/10

IP地址归属地

全球IP地址分配由IANA(Internet Assigned Numbers Authority)负责管理,官方网站是:Internet Assigned Numbers Authority但IANA不负责具体的地址分配,具体的地址分配由其下属的几个互联网中心管理,其中包括:

  • APNIC(亚太互联网络信息中心)
  • AFRINIC(非洲互联网信息中心)
  • ARIN(北美互联网号码注册中心)
  • LACNIC(拉美互联网信息中心)
  • RIPE NCC(欧洲网络资讯中心)

分别负责具体的IP地址分配。理论上,所有IP地址的归属,都能从以上的几个中心网站上查到,其中APNIC的查询页面是: APNIC – Query the APNIC Whois Database可以说,大多数IP数据库中的原始数据都是来自这里。但这里只能查询到IP地址申请人所描述的信息,实际上根本无法精确到具体的街道、校区、宿舍等。而且IANA只负责分配,不负责管理具体这个IP地址怎么用。所以,理论上说,完全精确的IP地址数据库是根本不存在的。需要注意的是:凡是那种有精确楼号、街道、校区的IP地址数据库,都不一定是准确,都是经过人工修正的,如果有一天互联网接入商更改了IP地址分配的策略,那么这种数据库就不准了。国内使用的最多的纯真IP数据库就是基于WHOIS数据库创建的。

目前国内绝大多数IP库都由WHOIS数据库作为基础数据来源。WHOIS数据仅表示某个IP被哪个机构注册,但无从知晓该IP被用在何处,这就导致许多非运营商自己注册的IP地址无法被正确分类。

基于边界网关的IP数据

随着互联网规模的增加,为了处理大批量的路由数据,边界网关协议(即BGP,下同)应运而生,是互联网的基础协议之一。为了保证了全球网络路由的可达性,但凡需要在互联网中注册一个IP(段),都需要借助BGP协议对外广播,这样互联网中的其他自治域才能学习到这段地址的路由信息,其它主机才能成功访问这个IP(段)。因此可以说,BGP数据是最适合分析运营商IP地址的数据来源之一。

但是,目前国内绝大多数IP库都由WHOIS数据库作为基础数据来源。WHOIS数据仅表示某个IP被哪个机构注册,但无从知晓该IP被用在何处,这就导致许多非运营商自己注册的IP地址无法被正确分类。ipip.net是最早开始做BGP/ASN数据分析的公司之一,数据准确性甩其它库几条街。但很可惜是,ipip.net作为商业公司,绝大多数高质量的IP数据都是收费的,且价格不菲。但有类似的 开源版本

服务器如何获取IP

在讨论获取客户端IP 地址前,我们首先下弄明白的是以下三个的具体含义:REMOTE_ADDR,HTTP_CLIENT_IP,HTTP_X_FORWARDED_FOR

  • REMOTE_ADDR:访问端(有可能是用户,有可能是代理的)IP
  • HTTP_CLIENT_IP:代理端的(有可能存在,可伪造)
  • HTTP_X_FORWARDED_FOR:用户是在哪个IP使用的代理(有可能存在,也可以伪造)

没有使用代理服务器的情况:

  • REMOTE_ADDR = 您的 IP
  • HTTP_CLIENT_IP = 没数值或不显示
  • HTTP_X_FORWARDED_FOR = 没数值或不显示

使用透明代理服务器的情况:Transparent Proxies

  • REMOTE_ADDR = 最后一个代理服务器 IP
  • HTTP_CLIENT_IP = 代理服务器 IP
  • HTTP_X_FORWARDED_FOR = 您的真实 IP ,经过多个代理服务器时,这个值类似如下:98.182.163, 203.98.182.163, 203.129.72.215。

这类代理服务器还是将您的信息转发给您的访问对象,无法达到隐藏真实身份的目的。

使用普通匿名代理服务器的情况:Anonymous Proxies

  • REMOTE_ADDR = 最后一个代理服务器 IP
  • HTTP_CLIENT_IP = 代理服务器 IP
  • HTTP_X_FORWARDED_FOR = 代理服务器 IP ,经过多个代理服务器时,这个值类似如下:98.182.163, 203.98.182.163, 203.129.72.215。

隐藏了您的真实IP,但是向访问对象透露了您是使用代理服务器访问他们的。

使用欺骗性代理服务器的情况:Distorting Proxies

  • REMOTE_ADDR = 代理服务器 IP
  • HTTP_CLIENT_IP = 代理服务器 IP
  • HTTP_X_FORWARDED_FOR = 随机的 IP ,经过多个代理服务器时,这个值类似如下:98.182.163, 203.98.182.163, 203.129.72.215。

告诉了访问对象您使用了代理服务器,但编造了一个虚假的随机IP代替您的真实IP欺骗它。

使用高匿名代理服务器的情况:High Anonymity Proxies (Elite proxies)

  • REMOTE_ADDR = 代理服务器 IP
  • HTTP_CLIENT_IP = 没数值或不显示
  • HTTP_X_FORWARDED_FOR = 没数值或不显示 ,经过多个代理服务器时,这个值类似如下:98.182.163, 203.98.182.163, 203.129.72.215。

完全用代理服务器的信息替代了您的所有信息,就像您就是完全使用那台代理服务器直接访问对象。

备注:服务器如果做了负载均衡,则需要在在获取IP时使用HTTP_X_FORWARDED_FOR获取原IP。

相关 [数据分析 知道 ip] 推荐:

数据分析该知道的IP地址知识

- - 标点符
第一次接触到IP,还是在十多年前使用统计系统时,当时的统计系统中有个指标是IP地址. 即记录每天有多少不同的IP访问您的网站,在后来是自己搭建统计系统时涉及到对IP地址省份、城市、区域的解析. 最近在推进风控项目时又有遇到,所以抽时间把相关的知识点做下简单的整理. IP地址(英语:IP Address,全称Internet Protocol Address).

不知道自己的 IP 地址是多少?直接问 Google

- Heng Yang - cnBeta.COM
Google有很多实用的OneBox,比如直接搜索简单的四则运算公式就会算出答案,你还可以问Google时间、股票、天气、球赛时间、货币兑换、度量单位换算等待. 最近Google又多了一个新本领:告诉你自己的IP地址是多少.

tcp/ip调优

- Lucseeker - 在路上
在TCP/IP协议中,TCP协议提供可靠的连接服务,采用三次握手建立一个连接. 第一次握手:建立连接时,客户端发送syn包(syn=x)到服务器,并进入SYN_SEND状态,等待服务器确认;. 第二次握手:服务器收到syn包,必须确认客户的SYN(ack=x+1),同时自己也发送一个SYN包(syn=y),即SYN+ACK包,此时服务器进入SYN_RECV状态;.

获取 WAN IP

- 狗尾草 - LinuxTOY
如果你在 router 或者 firewall 后面,你直接查询 interface ,拿到可能不是 WAN 的 IP. 很久很久以前的一个版本,把它们贴到 .bashrc (Bash 专用) 或者 .profile (非 Bash 专用)里面去. .profile 即可生效,输入 myip 就能拿到 WAN IP.

Excel 数据分析

- - ITeye博客
用Excel做数据分析——直方图. 已有 0 人发表留言,猛击->> 这里<<-参与讨论. —软件人才免语言低担保 赴美带薪读研.

扯扯数据分析

- - 互联网分析
在别人的眼里数据分析既是很深奥的职业,也是被人挑战的职业,更是让你又恨又爱的职业. 其实这些都不重要的,重要的是对此行感兴趣,骨子里有量化一切的 意识. 很多人首先脑海中出现的是1、2、3……等等,为何有这样的印象. 其实是我们数据分析师为了更好的运用“统计学”所以要将许多 数据想尽办法来转化为1、2、3这样的数据形式,从而更深入、科学的分析data,不扯这个了,这个没什么意思,看图:.

数据分析那些事

- - 小蚊子乐园
今早突然有个想法,就是经常有网友会对数据分析方面有一些困惑,并且咨询我该怎么办. 并且经常是同样的问题,所以觉得有必要对一些经典共性的问题进行整理,与大家分享,这里并非标准答案,仅作参考. 欢迎提出自己对数据方面的疑问,将在此篇将持续更新,敬请关注. ----------------------------------------我不是完美的分割线--------------------------------------- .

谈大数据分析

- - 人月神话的BLOG
对于数据分析层,我们可以看到,其核心重点是针对海量数据形成一个分布式可弹性伸缩的,高查询性能的,支持标准sql语法的一个ODS库. 我们看到对于Hive,impala,InfoBright更多的都是解决这个层面的问题,即解决数据采集问题,解决采集后数据行列混合存储和压缩的问题,然后形成一个支撑标准sql预防的数据分析库.

TCP/IP分享——链路层

- Goingmm - 弯曲评论
在张国荣自尽8周年纪念日,也就是愚人节的前几十分钟,终于把第二章弄完了. 首席似乎不是特别有空,我就斗胆在这里自己发了,从前面2期的反响来看,相当热烈,我也是摆出一副要杀要剐,悉听尊便的架势,这可能是受最近流行霸气外露的影响,批评几句又伤不了皮毛,也影响不了我的工作和正常生活,只要给大家带来快乐,我就很开心,似乎历史上很多想法都是在争吵中诞生的.