As sub-redes são sempre contíguas? [duplicado]

23

Eu entendo a premissa básica por trás das máscaras de sub-rede, como 255.255.255.0 . Mas todos os exemplos de sub-rede que vi foram (da esquerda para a direita) 1s contíguos (bits HI). Por exemplo, 255.255.0.0 ( /16 ) traduz os seguintes octetos:

11111111 . 11111111 . 00000000 . 00000000

Eu acredito que esses bits devem ser contíguos, porque o ponto principal da sub-rede é derivar o ID do host e os intervalos de IDs de dispositivos disponíveis. Mas isso me faz pensar, você pode ter uma máscara de subrede, digamos, 255.17.255.0 , ou:

11111111 . 00010001 . 11111111 . 00000000
  • Isso aconteceria? Ou é impossível que as sub-redes existam sem 1s contíguos? Se sim, porquê?
  • Caso contrário, se é possível fazer isso, por que você (alguns exemplos concretos)?
por DirtyMikeAndTheBoys 30.09.2015 / 01:50

4 respostas

17

A seção 3.1 da RFC mostra as máscaras permitidas no roteamento interdomínio sem classe. Os bits precisam ser contíguos para o roteamento funcionar corretamente.

Além disso, ao pensar logicamente, não faria sentido ter estranhas máscaras de rede aleatórias.

    
por 30.09.2015 / 03:12
25

Sim, a maneira mais fácil de pensar nisso é que as máscaras de sub-rede são sempre 1s no começo. Se um indicador de tamanho de sub-rede não tiver 1s no início da representação binária, então eu diria que o indicador de tamanho de sub-rede não é uma “máscara de sub-rede” adequada, usando padrões modernos.

RFC 1219 afirma que o anterior RFC 950 permite bits não contíguos. Na verdade, a RFC 950 página 15 (seção 3) tem claramente um exemplo que “ilustra a sub-rede não contígua No entanto, não há como converter essas sub-redes em notação CIDR. A notação no estilo CIDR é o que o IPv6 tem usado (pelo menos desde RFC 1884 página 7 , primeira sentença da seção 2.4), então os bits não contíguos nunca foram amplamente suportados por redes IPv6. RFC 1219 método especifica que" sub-bits (mask = 1) são atribuídos a partir do bit mais significativo trabalhando para o mínimo ". (A seção 3.1 da RFC 4632 , mencionada pela resposta de Sami, aponta para um padrão oficial que discute a notação do CIDR.)

A RFC 1878 página 2 mostra a notação padrão de “máscara de sub-rede” para todas as sub-redes IPv4, exceto para /0 .

No entanto, eu vou elaborar um pouco sobre a resposta de Sami, olhando para o "porquê" (com um exemplo concreto, como a pergunta foi feita) ...

Alguns equipamentos Cisco de nível profissional suportam algo chamado de “máscara curinga”, que inverte os bits. Então, uma sub-rede normal pode ser representada por algo chamado 00000000.00000000.00000000.11111111 .

Com as máscaras curinga da Cisco, não havia uma regra em que todos os zeros precisassem ir primeiro. Então você poderia usar 00000000.00000000.00000000.11111110 .

Isso acabaria criando um grupo que continha todos os endereços IP com numeração par.

Isso foi realmente importante saber, porque o treinamento da Cisco cobriu isso e, portanto, o processo de exame das certificações profissionais da Cisco pode perguntar sobre isso.

No entanto, acho que foi mais inútil. Em vez de dividir uma rede pela metade usando endereços pares ou endereços ímpares, basta dividir uma rede pela metade usando endereços de números baixos e endereços de números altos, criando sub-redes normais com metade da largura.

As máscaras curinga com bits não contíguos não são muito úteis e podem ser mais difíceis de se trabalhar. O ponto do bit da máscara de sub-rede definido como 1 é para dizer que o bit ajuda a identificar em qual sub-rede um dispositivo está. Não há motivo para que esses bits se espalhem pelo endereço, em vez de agrupá-los no início do endereço . O resultado foi que o suporte a esses tipos de máscaras era uma complexidade adicional sem muito benefício substancial.

Acho que a Cisco acabou concordando que não há sentido para essas máscaras de sub-rede não tradicionais, porque elas acabaram descartando o suporte a máscaras curinga. Os firewalls mais antigos da Pix suportam máscaras curinga, mas as novas unidades ASA usam a sub-rede padrão masks ”em vez disso.

Eu nem tentaria fazer uma rede com "bits de sub-rede" não contíguos na máscara, porque muitos softwares seguiriam as tendências / padrões mais recentes e rejeitariam esse design de rede. Mesmo se eu estivesse usando um software mais antigo, provavelmente desejaria que minha rede pudesse ser facilmente modificada para poder usar software mais recente sem precisar redesenhar a rede. Então, "bits de sub-rede" contíguos são o único caminho a seguir.

Se você fizer a pergunta em um teste, eu ficaria confiante em dizer que todos os 1s precisam estar no início do endereço. Isso é o que qualquer testador sensato gostaria que a maioria dos alunos aprendesse nos dias de hoje.

    
por 30.09.2015 / 05:24
1

Concordo com a resposta de @Sami Kuhmonen:

The section 3.1 in the RFC shows the allowed masks in the classless inter-domain routing. The bits have to be contiguous for the routing to work properly. Also when thinking logically it would not really make sense to have strange random network masks.

No entanto, mesmo que não seja desejado ou permitido, ainda é possível definir uma máscara de sub-rede de 1s não consecutivos. A razão por trás disso:
O ID da rede e o ID do host são calculados a partir do endereço IP e da máscara de sub-rede usando as operações binárias AND e XOR. Tudo o mais é irrelevante.

Eu testei há anos no Win 2000, funciona. Ambos os computadores tinham uma máscara de 255.160.0.0. Eles estavam em uma LAN sem roteador, então não posso dizer sobre o comportamento do roteador (normalmente você pode definir a máscara do roteador apenas em sua interface web, que irá rejeitá-lo). Você também não pode inserir uma máscara de sub-rede 'inválida' no campo correspondente das configurações de rede; a GUI se recusa a aceitá-lo. Mas você pode trapacear alterando-o diretamente no registro. Depois reinicialize ou desative + ative a NIC para que as alterações se tornem ativas.
O propósito de tudo isso: uhm, provavelmente nenhum.

    
por 30.09.2015 / 09:38
1

RFC 950 diz no capítulo 2.2:

 To support subnets, it is necessary to store one more 32-bit
  quantity, called my_ip_mask.  This is a bit-mask with bits set in
  the fields corresponding to the IP network number, and additional
  bits set corresponding to the subnet number field.

 The code then becomes:

   IF bitwise_and(dg.ip_dest, my_ip_mask)
                               = bitwise_and(my_ip_addr, my_ip_mask)
         THEN
             send_dg_locally(dg, dg.ip_dest)
         ELSE
             send_dg_locally(dg,
                    gateway_to(bitwise_and(dg.ip_dest, my_ip_mask)))

então a proposta era sobre uma simples operação de bits que não se importava com bits contíguos.

Em 1985, a CPU e a memória eram muito mais limitadas, portanto, operações mais complexas simplesmente não caberiam no tempo.

Torna-se ainda mais explícito no capítulo 3:

and that on network an 3-bit subnet field is in use (01011000), that is, the address mask is 255.255.255.88.

No entanto, esses RFCs parecem estar desatualizados. No Windows 7 SP1, por exemplo, não é possível definir essa máscara de sub-rede:

MesmonoWindowsXPSP2,issonãoeramaispossível:

OWindows98cloneReactOS,noentanto,permiteconfiguraramáscaraderede"estranha":

    
por 30.09.2015 / 20:39