Quão uniforme é a distribuição de dígitos na última parte de um endereço IPv4?

8

Eu tenho um script de redirecionamento operando em um site que criei. Envia 1/3 dos visitantes do site A, 1/3 dos visitantes do site B e 1/3 do site C.

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 em assumir que o último segmento do endereço IPv4 é atribuído de forma totalmente aleatória?

Além disso, a distribuição de números para o último segmento é igual?

    
por Adjam 11.05.2012 / 12:34

2 respostas

14

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, isso não é totalmente o caso, pois 0 é um número reservado para a rede e 255 é reservado para transmissão, o que realmente 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 delineia quais bits no octeto representam a rede e quais bits representam o host individual. Então:

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

Isso significa que você pode ter endereços que vão de 11.12.0.1 a 11.12.255.254. Por causa disso:

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

Isso significa que você nem sempre pode contar que o último octeto seja '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 receberá um endereço IP público atribuído por seu ISP via DHCP, onde seu endpoint obterá um endereço escolhido por um computador (geralmente seqüencialmente, primeiro a chegar / primeiro a ser servido de um pool disponível) no qual eles mantêm um contrato predeterminado. quantidade de tempo (normalmente um par de dias) antes de receber outro número. Grandes organizações (empresas, governo) geralmente terão um conjunto de endereços dos quais eles sempre vêm e esses endereços são estáticos e não serão alterados.

Para responder à sua pergunta, dadas as informações acima:

1) Os endereços IP não são atribuídos aleatoriamente. Geralmente, há algum tipo de método lógico para atribuir endereços IP 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 iguais. Você não pode confiar apenas no último octeto para fornecer 'unicidade'.

Come on IPv6!

    
por 11.05.2012 / 20:52
4

O último octeto provavelmente será inclinado para o extremo inferior, porque as redes tendem a ser numeradas de baixo. Um esquema melhor seria tratar o endereço IP inteiro como um inteiro não assinado de 32 bits e usar a operação modulo para obter o restante quando mergulhando pelo número de baldes que você deseja. Isso atribuiria cada endereço (numericamente) subseqüente a um intervalo diferente (quando o último depósito for atingido).

Por exemplo:

1.2.3.4 = 16909060
16909060 % 3 = 1

Então isso colocaria 1.2.3.4 no bucket 1 (onde os buckets são numerados como 0, 1 e 2). 1.2.3.5 entraria no bucket 2 e 1.2.3.6 entraria no bucket 0.

    
por 13.05.2012 / 00:32

Tags