As sub-redes são sempre 1s contíguas?

As sub-redes são sempre 1s contíguas?

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) se traduz nos seguintes octetos:

11111111 . 11111111 . 00000000 . 00000000

EUacreditarque esses pedaçosdeveser contíguo, porque o objetivo da criação de sub-redes é derivar o ID do host e os intervalos de IDs de dispositivos disponíveis. Mas isso me faz pensar: você poderia ter uma máscara de sub-rede de, digamos, 255.17.255.0ou:

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

Responder1

A seção 3.1 doRFCmostra as máscaras permitidas no roteamento interdomínio sem classe. Os bits devem ser contíguos para que o roteamento funcione corretamente.

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

Responder2

Sim, a maneira mais fácil de pensar sobre isso é que as máscaras de sub-rede são sempre 1s no início. 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 1219afirma que o RFC 950 anterior permite bits não contíguos. Na verdade,RFC 950 página 15(seção 3) tem claramente um exemplo que “ilustra bits de sub-rede não contíguos". No entanto, não há como converter tais sub-redes em notação CIDR. A notação estilo CIDR é o que o IPv6 tem usado (pelo menos desdeRFC 1884 página 7, primeira frase da seção 2.4), portanto, bits não contíguos nunca foram amplamente suportados em redes IPv6.RFC 1219O método especifica que “bits de sub-rede (máscara = 1) são atribuídos a partir do bit mais significativo trabalhando em direção ao menos". (ORFC 4632 seção 3.1, mencionado pela resposta de Sami, aponta para um padrão oficial que discute a notação CIDR.)

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

Porém, vou elaborar um pouco a resposta de Sami, analisando o “porquê” (com um exemplo concreto, como a pergunta pedia)...

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

Com as máscaras curinga da Cisco, não havia uma regra segundo a qual todos os zeros deveriam vir primeiro. Então você poderia usar 00000000.00000000.00000000.11111110.

Isso acabaria criando um grupo que continha todos os endereços IP pares.

Na verdade, era importante saber isso, porque o treinamento da Cisco cobria esse assunto e, portanto, o processo de exame para as certificações profissionais da Cisco poderia perguntar sobre esse assunto.

No entanto, acho que foi praticamente inútil. Em vez de dividir uma rede ao meio usando endereços pares ou endereços ímpares, você poderia simplesmente dividir uma rede ao meio usando endereços com numeração baixa e endereços com numeração alta, criando sub-redes normais com metade do tamanho.

Máscaras curinga com bits não contíguos não eram muito úteis e poderiam ser mais difíceis de trabalhar. O objetivo do bit da máscara de sub-rede definido como 1 é dizer que esse bit ajuda a identificar em qual sub-rede um dispositivo está. Não há nenhuma razão convincente para espalhar esses bits por todo o endereço, em vez de apenas agrupá-los no início do endereço . O resultado foi que apoiar esses tipos de máscaras era uma complexidade adicional, sem muitos benefícios substanciais.

Acho que a Cisco acabou concordando que não faz sentido usar essas máscaras de sub-rede não tradicionais, porque elas eventualmente abandonaram o suporte para “máscaras curinga”. Os firewalls Pix mais antigos suportam “máscaras curinga”, mas as unidades ASA mais recentes usam “máscaras de sub-rede” padrão. .

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 tal projeto de rede. Mesmo se eu estivesse usando software mais antigo, provavelmente desejaria que minha rede pudesse ser facilmente modificada para poder usar software mais recente sem precisar redesenhar a rede. Portanto, “bits de sub-rede” contíguos são o único caminho a percorrer.

Se essa pergunta for feita a você em um teste, eu me sentiria 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.

Responder3

RFC 950diz 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 operação simples de bits que não se importa com bits contíguos.

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

Fica ainda mais explícito no capítulo 3:

e que na rede está em uso um campo de sub-rede de 3 bits (01011000), ou seja, a máscara de endereço é 255.255.255.88.

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

Máscara de sub-rede contígua necessária no Windows 7

Mesmo no Windows XP SP2, isso não era mais possível:

Máscara de sub-rede Windows XP SP2

O clone ReactOS do Windows 98, entretanto, permite definir a máscara de rede "estranha":

Máscara de sub-rede ReactOS

Responder4

Concordo com a resposta de @Sami Kuhmonen:

A seção 3.1 da RFC mostra as máscaras permitidas no roteamento interdomínios classless. Os bits devem ser contíguos para que o roteamento funcione corretamente. Além disso, ao pensar logicamente, não faria sentido ter máscaras de rede aleatórias estranhas.

Porém, mesmo que não seja desejado ou permitido, ainda é possível definir uma máscara de sub-rede de 1's 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. Todo o resto é irrelevante.

Eu testei isso anos atrás no Win 2000, funciona. Ambos os computadores tinham uma máscara 255.160.0.0. Eles estavam em uma LAN sem roteador, então não posso informar sobre o comportamento do roteador (normalmente você pode definir a máscara do roteador apenas na interface web, que irá rejeitá-la).
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 reinicie ou desabilite+habilite a NIC para que as alterações se tornem ativas.
O propósito de tudo isso: uhm, provavelmente nenhum.

informação relacionada