Eu tenho um script de redirecionamento operando em um site que eu criei. Ele envia 1/3 dos visitantes ao site A, 1/3 dos visitantes ao site B e 1/3 ao site C.
Ele funciona dividindo a última parte do endereço IPv4 dos usuários (0-255) por 3 e eles são redirecionados para o site A, B ou C, dependendo do restante. Até agora, o site A teve 109 visitantes, o site B teve 85 e o site C teve 101.
Estou correto ao supor que o último segmento do endereço IPv4 seja atribuído completamente aleatoriamente?
Além disso, a distribuição de números para o último segmento é igual?
ip
ip-address
Adjam
fonte
fonte
Respostas:
Os endereços IPv4 não são tão desajeitados e aleatórios quanto você imagina.
Primeiro, um endereço IPv4 é separado em 4 octetos, cada um variando de 0 a 255. No entanto, esse não é o caso, pois 0 é um número reservado para a rede e 255 é reservado para transmissão, o que realmente o limita a 1-254 .
Em segundo lugar, você deve considerar que os endereços IPv4 são atribuídos em blocos a organizações e ISPs que os subdividem com base em um endereço de sub-rede que define quais bits no octeto representam a rede e quais bits representam o host individual. Assim:
Isso significa que você pode ter endereços que variam de 11.12.0.1 a 11.12.255.254. Por causa disso:
Isso significa que você nem sempre pode contar com o último octeto para ser 'aleatório'.
Em terceiro lugar, os meios de atribuição de endereços IP nem sempre são aleatórios. A maioria dos usuários domésticos obterá um endereço IP público atribuído por seu ISP via DHCP, onde seu ponto final obterá um endereço escolhido por um computador (geralmente sequencialmente, o primeiro a chegar / primeiro a ser servido a partir de um pool disponível) no qual eles mantêm uma concessão por um período predeterminado. tempo (geralmente alguns dias) antes de receberem outro número. As grandes organizações (empresas, governo) geralmente têm um conjunto de endereços de onde sempre vêm e esses endereços são estáticos e não mudam.
Para responder sua pergunta, dadas as informações acima:
1) Os endereços IP não são atribuídos aleatoriamente. Geralmente, existe algum tipo de método lógico para atribuir endereços IP endereçados para permitir o roteamento correto e oportuno do tráfego através de uma rede e da Internet.
2) A distribuição do último octeto de um endereço IPv4 depende de vários fatores relacionados às informações acima (e do humor do administrador da rede, em alguns casos) e, portanto, não é igual. Você não pode confiar apenas no último octeto para fornecer 'exclusividade'.
Come on IPv6!
fonte
É provável que o último octeto seja inclinado para a extremidade inferior, porque as redes tendem a ser numeradas de baixo para cima. Um esquema melhor seria tratar o endereço IP inteiro como um inteiro não assinado de 32 bits e usar a operação de módulo para obter o restante ao mergulhar pelo número de buckets que você deseja. Isso atribuiria cada endereço subsequente (numericamente) a um depósito diferente (contornando quando o último depósito for atingido).
Por exemplo:
Portanto, isso colocaria 1.2.3.4 no balde 1 (onde os baldes são numerados 0, 1 e 2). 1.2.3.5 entraria no balde 2 e 1.2.3.6 entraria no balde 0.
fonte