Possíveis padrões (de bits) de uma máscara de rede

13

Dado um prefixo Y, é fácil calcular a máscara de rede correspondente: coloque Yvezes um bit definido e preencha "à direita" com zeros até que um tenha 32 bits (IPv4) no total.

Exemplo:

Prefixo 24, máscara de rede 11111111 11111111 11111111 00000000ou 255.255.255.0.

Pode haver uma máscara de rede com um padrão de bits diferente , como

  • 00000000 11111111 00000000 11111111( 0.255.0.255)
  • 00000000 11111111 11111111 11111111( 0.255.255.255)
  • 11111111 11111111 11111111 00000001( 255.255.255.1)

A especificação de um "prefixo" obviamente não funcionaria nesses casos.

(Tenho certeza de que a resposta é "NÃO", mas estou escrevendo algum código de rede, e isso precisa funcionar em todos os casos possíveis, por isso quero ter 101% de certeza.)

Daniel Jour
fonte

Respostas:

11

A RFC950 afirma que

Como os bits que identificam a sub-rede são especificados por uma máscara de bits, eles não precisam ser adjacentes ao endereço. No entanto, recomendamos que os bits de sub-rede sejam contíguos e localizados como os bits mais significativos do endereço local.

A maioria dos dispositivos segue esta recomendação na medida em que é aplicada. Eu só consegui usar máscaras de sub-rede não contíguas em redes apenas Linux em 2012; os dispositivos Windows, OSX, Cisco e HP que testei não manipularam / permitiram.

Filip Haglund
fonte
2
Eu acredito que isso foi substituído pelo RFC1519 , que requer explicitamente uma máscara contígua.
user1686
@ grrawity Pode ser o caso. Encontrado "A única restrição pendente é que a máscara deve ser deixada contígua." ao falar sobre o CIDR, mas não leu o suficiente para entender o contexto.
Filip Haglund
6

Se você estiver usando prefixos e redes, a resposta é não, os bits precisam ser contíguos. Há casos em que uma máscara curinga (inversa da máscara) pode ser usada, por exemplo, ACLs da Cisco e esses podem ter qualquer padrão de bits. Por exemplo, você pode bloquear o tráfego de todos os hosts numerados ímpares em uma rede. Isso ainda parece ser ensinado, mas não o vi usado com muita frequência (embora tenha visto) no mundo real.

Ron Maupin
fonte
4

Não. Uma máscara de rede é uma série contínua de unidades.

(Os outros são padrões "curinga".)

Ricky Beam
fonte
1
Isso não é verdade. 30 anos atrás, havia muitos. Ainda pode haver alguns em operação.
MAPA
2
Eu duvido disso. Nenhum hardware de roteamento moderno permitirá isso. E os roteadores dos anos 80 terão muitos problemas com a maneira como o IP funciona atualmente. (Já estive lá. Disse que você não usaria a sub-rede totalmente zero - mesmo no final dos anos 90 que era um problema) Os únicos dois dispositivos que ainda tenho daquela época não aceitarão uma máscara de rede não contígua. (WTI pdus, ainda ao redor, porque eles têm portas 10BT fala nada para eles, acima de tudo. A internet .)
Ricky feixe
3

Quando o TCP / IP foi divulgado pela primeira vez e se espalhou, havia muitas sub-redes com máscaras não contíguas. Porém, à medida que os endereços se tornaram escassos, a sobrecarga para o resto da rede permitiu o roteamento global desses prefixos, em vez de forçar tudo a ser apenas baseado em prefixos; era demais e a rede global mudou para apenas prefixos de suporte. Na verdade, ainda pode haver redes herdadas que usam máscaras não contíguas internamente (muitos IGPs ainda suportam isso). Porém, quando essa rede se conecta à Internet, ela possui um único prefixo que cobre todas elas, que anuncia no BGP. E, é claro, o EGP (o antecessor do BGP) suportava apenas o endereço Classful.

Conheço vários jogadores com redes de classe A de emissão original que usavam máscaras de rede não contíguas internamente por um motivo ou outro. Só não sei se algum deles ainda está fazendo isso. Muitos nem sequer saem mais. O ARPAnet tinha uma máscara de rede interna 255.0.0.255 (IIRC).

MAPA
fonte
2
ABSURDO. Isso não tem nada a ver com CIDR, classes ou agregação. Uma máscara de rede SEMPRE foi contígua.
Ricky feixe
6
Veja RFC 950 , por exemplo. Página 15 fornece um exemplo com uma máscara de rede 255.255.255.88.
Ross Presser
4
Acho que a página 12 da RFC 1519 realmente prejudica o seu caso, pois a única sentença relevante é: " A única restrição pendente é que a máscara deve ser deixada contígua ". (Ênfase minha) Como a máscara é implícita / assumida pela classe no roteamento de classe, e apenas três máscaras contíguas foram usadas, e o RFC no CIDR especifica máscaras contíguas, parece que sua resposta está errada. A postagem na lista do FreeBSD é um mistério para mim.
Todd Wilcox
3
A RFC de substituição é 4632: tools.ietf.org/html/rfc4632 Observe que a notação de barra é discutida e usada, e o termo " comprimento do prefixo " aparece várias vezes, nenhuma das quais faria sentido se máscaras não contíguas suportado. Está claro no RFC 950 que poderia haver sistemas nos primeiros dias que usavam máscaras não contíguas, mas trazer isso à tona não ajudará o solicitante a entender como o TCP / IP atualmente funciona e pode ser muito confuso.
Todd Wilcox
3
Como os bits que identificam a sub-rede são especificados por uma máscara de bits, eles não precisam ser adjacentes ao endereço. No entanto, recomendamos que os bits de sub-rede sejam contíguos e localizados como os bits mais significativos do endereço local . Embora isso não contenha a redação DEVE / DEVE ser usada hoje, é exatamente assim que todos criaram recursos modernos de sub-redes. Em mais de três décadas de rede, nunca encontrei uma tecnologia que permita sub-redes descontínuas.
Ricky Beam