¿Qué tan uniforme es la distribución de dígitos en la última parte de una dirección IPv4?

9

Tengo un script de redireccionamiento que opera en un sitio web que creé. Envía 1/3 de visitantes al sitio A, 1/3 de visitantes al sitio B y 1/3 al sitio C.

Funciona dividiendo la última parte de la dirección IPv4 de los usuarios (0-255) por 3, y se redirigen al sitio A, B o C según el resto. Hasta ahora, el sitio A ha tenido 109 visitantes, el sitio B ha tenido 85 y el sitio C ha tenido 101.

¿Estoy en lo cierto al suponer que el último segmento de la dirección IPv4 se asigna completamente al azar?

Además, ¿es igual la distribución de números para el último segmento?

Adjam
fuente
¿Qué te hace pensar que el último segmento está "asignado completamente al azar"?
MrWhite
1
Es una suposición. No estoy seguro si esta suposición es correcta. Ese es el contenido de mi pregunta.
Adjam
¿Por qué no simplemente hacer round robin?
Bigbio2002
@ Bigbio2002 Porque los usuarios pueden volver. No quiero que se envíe un usuario a la versión buena, luego a la versión pobre, ya que esto afectará el comportamiento del usuario.
Adjam

Respuestas:

14

Las direcciones IPv4 no son tan torpes y aleatorias como se podría suponer.

En primer lugar, una dirección IPv4 se separa en 4 octetos, cada uno de los cuales va de 0 a 255. Sin embargo, este no es el caso por completo, ya que 0 es un número reservado para la red y 255 está reservado para la transmisión, lo que realmente lo limita a 1-254 .

En segundo lugar, debe tener en cuenta que las direcciones IPv4 se asignan en bloques a organizaciones e ISP que luego las subdividen en función de una dirección de subred que delimita qué bits en el octeto representan la red y qué bits representan el host individual. Entonces:

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

Significaría que podría tener direcciones que van desde 11.12.0.1 a 11.12.255.254. Debido a esto:

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

Esto significa que no siempre puede contar con que el último octeto sea 'aleatorio'.

En tercer lugar, los medios de asignación de la dirección IP no siempre son aleatorios. La mayoría de los usuarios domésticos obtendrán una dirección IP pública asignada por su ISP a través de DHCP, donde su punto final obtendrá una dirección elegida por una computadora (generalmente secuencialmente, primero llegado / primero servido de un grupo disponible) sobre el cual tienen un contrato de arrendamiento predeterminado cantidad de tiempo (generalmente un par de días) antes de que se les asigne otro número. Las grandes organizaciones (empresas, gobierno) a menudo tendrán un conjunto de direcciones de las que siempre provienen y estas direcciones son estáticas y no cambiarán.

Para responder a su pregunta, dada la información anterior:

1) Las direcciones IP no se asignan al azar. Por lo general, existe algún tipo de método lógico para asignar direcciones IP para permitir el enrutamiento correcto y oportuno del tráfico a través de una red e Internet.

2) La distribución del último octeto de una dirección IPv4 depende de varios factores relacionados con la información anterior (y el estado de ánimo del administrador de la red, en algunos casos) y, por lo tanto, no es igual. No puede confiar solo en el último octeto para proporcionar 'unicidad'.

Come on IPv6!

Justin Pearce
fuente
5

Es probable que el último octeto esté sesgado hacia el extremo inferior, porque las redes tienden a estar numeradas desde abajo. Un mejor esquema sería tratar la dirección IP completa como un entero sin signo de 32 bits y usar la operación de módulo para obtener el resto al bucear por la cantidad de cubos que desee. Esto asignaría cada dirección subsiguiente (numéricamente) a un depósito diferente (envolviendo cuando se alcanza el último depósito).

Por ejemplo:

1.2.3.4 = 16909060
16909060 % 3 = 1

Entonces esto pondría 1.2.3.4 en el depósito 1 (donde los depósitos están numerados 0, 1 y 2). 1.2.3.5 entraría en el depósito 2, y 1.2.3.6 entraría en el depósito 0.

mgorven
fuente