IPv4地址的最后一部分中的数字分布如何均匀?


9

我在创建的网站上运行重定向脚本。它将1/3的访问者发送到站点A,将1/3的访问者发送到站点B,并将1/3的访问者发送到站点C。

它的工作原理是将用户IPv4地址的最后一部分(0-255)除以3,然后根据其余用户将它们重定向到站点A,B或C。到目前为止,站点A有109位访问者,站点B有85位访问者,站点C有101位访问者。

我是否可以完全完全随机分配IPv4地址的最后一段,这是正确的吗?

另外,最后一段的数字分布是否相等?


是什么使您认为最后一个段是“完全随机分配的”?
怀特先生2012年

1
这是一个猜测。我不确定这个猜测是否正确。这就是我的问题的内容。
2012年

为什么不做循环赛呢?
Bigbio2002

@ Bigbio2002因为用户可能会回来。我不希望将用户发送到好版本,然后再发送到差版本,因为这会影响用户的行为。
Adjam 2012年

Answers:


14

IPv4地址并没有您想象的那么笨拙和随机。

首先,将IPv4地址分为4个八位字节,每个八位字节的范围从0到255。但是,这并非完全如此,因为0是网络的保留数字,而255是保留用于广播的,这实际上将您限制为1-254 。

其次,必须考虑将IPv4地址以块的形式分配给组织和ISP,这些组织和ISP然后根据子网地址对它们进行细分,该子网地址描述了八位位组中的哪些位代表网络,哪些位代表单个主机。所以:

Network: 11.12.0.0
CIDR: 11.12.0.0/16
Subnet: 255.255.0.0
Hosts provided: 65534

这意味着您可以使用的地址范围是11.12.0.1至11.12.255.254。因为这:

Three separate hosts, same network, but same last octet:
11.12.10.20
11.12.20.20
11.12.30.20

这意味着您不能总是指望最后一个八位位组是“随机的”。

第三,IP地址分配的方法并不总是随机的。大多数家庭用户将获得其ISP通过DHCP分配的公共IP地址,其端点将获得计算机选择的地址(通常按顺序,从可用池中先到先服务),并在该计算机上保留预定的租期。在为他们分配另一个号码之前的时间(通常是几天)。大型组织(企业,政府)通常会具有一组它们始终来自的地址,这些地址是静态的并且不会改变。

考虑到以上信息,请回答您的问题:

1)IP地址不是随机分配的。通常存在一种分配IP地址的逻辑方法,以允许在网络和Internet上正确,及时地路由流量。

2)IPv4地址的最后一个八位位组的分布取决于与上述信息(在某些情况下,以及网络管理员的心情)相关的多种因素,因此并不相等。您不能仅依靠最后一个八位位组来提供“唯一性”。

Come on IPv6!


5

最后一个八位位组可能会偏向低端,因为网络倾向于从底部开始编号。更好的方案是将整个IP地址视为32位无符号整数,并在按所需的存储桶数潜水时使用取模运算来获取余数。这会将每个后续(数字)地址分配给不同的存储桶(在到达最后一个存储桶时进行环绕)。

例如:

1.2.3.4 = 16909060
16909060 % 3 = 1

因此,这会将1.2.3.4放入存储区1(存储区编号为0、1和2)中。1.2.3.5将进入存储区2,而1.2.3.6将进入存储区0。

By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.