Quanto è uniforme la distribuzione delle cifre nell'ultima parte di un indirizzo IPv4?


9

Ho uno script di reindirizzamento che opera su un sito Web che ho creato. Invia 1/3 dei visitatori al sito A, 1/3 dei visitatori al sito B e 1/3 al sito C.

Funziona dividendo l'ultima parte dell'indirizzo IPv4 degli utenti (0-255) per 3 e vengono reindirizzati al sito A, B o C a seconda del resto. Finora il sito A ha avuto 109 visitatori, il sito B ha avuto 85 e il sito C ha avuto 101.

Sono corretto supponendo che l'ultimo segmento dell'indirizzo IPv4 sia assegnato completamente a caso?

Inoltre, la distribuzione dei numeri per l'ultimo segmento è uguale?


Cosa ti fa pensare che l' ultimo segmento sia "assegnato completamente a caso"?
MrWhite,

1
È una supposizione. Non sono sicuro che questa ipotesi sia corretta. Questo è il contenuto della mia domanda.
Adjam

Perché non fare solo il round robin?
Bigbio2002,

@ Bigbio2002 Perché gli utenti potrebbero tornare. Non voglio che un utente venga inviato alla versione valida, quindi alla versione scadente, poiché ciò influirà sul comportamento dell'utente.
Adjam,

Risposte:


14

Gli indirizzi IPv4 non sono così goffi e casuali come si suppone.

In primo luogo, un indirizzo IPv4 è diviso in 4 ottetti, ciascuno compreso tra 0 e 255. Tuttavia, questo non è del tutto vero poiché 0 è un numero riservato per la rete e 255 è riservato per la trasmissione, il che in realtà ti limita a 1-254 .

In secondo luogo, è necessario considerare che gli indirizzi IPv4 sono assegnati in blocchi a organizzazioni e ISP che li suddividono in base a un indirizzo di sottorete che delinea quali bit nell'ottetto rappresentano la rete e quali bit rappresentano il singolo host. Così:

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

Significherebbe che potresti avere indirizzi che vanno dall'11.12.0.1 al 11.12.255.254. A causa di ciò:

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

Ciò significa che non puoi sempre contare sull'ultimo ottetto per essere "casuale".

In terzo luogo, i mezzi per l'assegnazione dell'indirizzo IP non sono sempre casuali. La maggior parte degli utenti domestici riceverà un indirizzo IP pubblico assegnato dal proprio ISP tramite DHCP, dove il loro endpoint riceverà un indirizzo scelto da un computer (di solito in sequenza, primo arrivato / primo servito da un pool disponibile) sul quale mantengono un contratto di locazione per un predeterminato tempo (di solito un paio di giorni) prima che gli venga assegnato un altro numero. Le grandi organizzazioni (aziende, governo) avranno spesso una serie di indirizzi da cui provengono sempre e questi indirizzi sono statici e non cambieranno.

Per rispondere alla tua domanda, date le informazioni di cui sopra:

1) Gli indirizzi IP non sono assegnati in modo casuale. Di solito esiste una sorta di metodo logico per assegnare l'IP indirizzato per consentire l'instradamento corretto e tempestivo del traffico attraverso una rete e Internet.

2) La distribuzione dell'ultimo ottetto di un indirizzo IPv4 dipende da una serie di fattori relativi alle informazioni di cui sopra (e lo stato d'animo dell'amministratore di rete, in alcuni casi) e, pertanto, non uguali. Non puoi fare affidamento solo sull'ultimo ottetto per fornire "unicità".

Come on IPv6!


5

È probabile che l'ultimo ottetto sia inclinato verso l'estremità inferiore, poiché le reti tendono ad essere numerate dal basso. Uno schema migliore sarebbe quello di trattare l'intero indirizzo IP come un intero senza segno a 32 bit e utilizzare l' operazione modulo per ottenere il resto durante l'immersione per il numero di bucket che si desidera. Ciò assegnerebbe ciascun indirizzo (numerico) successivo a un bucket diverso (avvolgendosi quando viene raggiunto l'ultimo bucket).

Per esempio:

1.2.3.4 = 16909060
16909060 % 3 = 1

Quindi questo metterebbe 1.2.3.4 nel bucket 1 (dove i bucket sono numerati 0, 1 e 2). 1.2.3.5 andrebbe nel bucket 2 e 1.2.3.6 andrebbe nel bucket 0.

Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.