Por que um endereço de rede pode não ser um endereço de host válido?

15

Então ... eu estudei para CCNA e tal e tenho trabalhado com redes IP pelo menos nos últimos 8 anos ou mais. Eu sempre vi e foi dito que o endereço de rede para uma sub-rede não é um endereço de host válido. Agora, primeiro vou começar dizendo que sei que isso é verdade. Minha pergunta é mais ... existe uma razão técnica que não pode ser usada ou foi simplesmente acordado arbitrariamente quando a especificação foi projetada? Eu entendo porque um endereço de broadcast não pode ser usado (porque é realmente usado). A coisa é quando eu vejo um endereço de rede usado é normalmente apenas no roteamento que é especificamente usando endereços de rede. Sendo este o caso, (endereços de rede sendo usados somente quando você está esperando um endereço de rede) há alguma razão técnica que eles não poderiam ter o endereço de rede ser um endereço de host válido real?

    
por Goblinlord 17.01.2012 / 17:07

7 respostas

14

Tanto quanto eu entendo, "endereço de rede" como um endereço especial é um artefato das redes IP classful do passado. Hoje, usamos o Roteamento entre Domínios sem Classes ( CIDR ) na Internet, que não tem o conceito de um endereço de rede (se você olhar para o RFC 4632 ligado acima, verá que ele lista 256 endereços IP possíveis por legado "C", por exemplo, nenhum endereço reservado para rede ou endereço de broadcast (embora broadcasts sejam definidos como essenciais em outros RFCs) .

Dito isto, você ainda não deve atribuir um endereço de rede a nenhum host específico em uma rede: o endereço de rede é essencial para o roteamento. Este conceito é usado extensivamente em RFCs ( RFC 1812 ). Basta olhar para as tabelas de roteamento (comando route ), você verá como o seu endereço de rede local é usado para separar o tráfego de sua rede local do que deve passar pelo roteador. E se esse endereço de rede local fosse atribuído a algum host?

Ainda pior: é melhor não atribuir endereços IP que terminem em zero, mesmo que esse endereço não seja em um endereço de rede. Por exemplo. Se a sua rede é 10.10.0.0/255.255.0.0, o endereço IP 10.10.5.0 não é o seu endereço de rede, mas é melhor não atribuir esse IP, mesmo que seja completamente válido, mesmo em redes IP de classe. Algumas pilhas de software / IP legadas podem ter problemas com isso.

UPDATE: por goblinlord

De acordo com a RFC 1812 (Seção 5.3.5.2) , o que chamamos de endereço de rede foi originalmente usado para "broadcasts direcionados", que enviariam um pacote de broadcast para a rede desejada. Esta função foi tornada obsoleta devido a ataques SMURF. A função foi oficialmente alterada em RFC 2644 . Posteriormente, outras implementações devem descartar pacotes com um endereço de origem, conforme descrito (o endereço de rede). Embora isso seja o que deveria acontecer, estou curioso para saber quantas implementações realmente fazem isso.

Isso é adicionado ainda no RFC 3021 quando a sub-rede / 31 foi abordada.

    
por 17.01.2012 / 17:54
4

Então a resposta prática é: realmente depende. Depende de:

  • O endereço exato
  • A versão e revisão do seu sistema operacional
  • ... E o do seu roteador e todos os outros roteadores upstream
  • ... E a inteligência e a sofisticação de todos os administradores de rede desses roteadores ...

Eu não me aprofundei muito nisso, mas parece que a maioria dos ISPs não impede que você atribua e use seu endereço de rede e eu não tive nenhum problema em acessar sites que testaram isso; parece que, em última análise, tudo é deixado para os caprichos dos administradores de rede.

Tenho certeza de que há analistas de segurança e hackers por aí que têm estatísticas detalhadas sobre quantas variantes de implementações de pilha TCP-IP estão disponíveis e o que fazer e não acomodar ou permitir e exatamente como e onde elas errar o alvo.

Na verdade, estou navegando e postando isso no meu endereço de rede.

Não me chame de um netizen ruim, a menos que você tenha uma solução melhor para consertar este castelo de cartas: a realidade é que, se for possível, isso acontecerá. A realidade é que ninguém realmente esperto o suficiente sentou-se e pensou em tudo isso em todas as suas iterações possíveis, a fim de chegar a um design completamente à prova de idiotas. O resultado? Padrões onde muitas coisas não se somam e / ou se perdem na tradução.

Bem-vindo ao mundo real. Não deixe que isso o impeça de perseguir os sempre ideais ideais ... Só não espere apoio dos canais ou fóruns "oficiais", a menos que esteja disposto a sujar as mãos e dedicar seu tempo e sua vida a isso. / p>

Então, eu acho que os outros cartazes estavam tentando dizer: se você quiser fazer essa política oficial e usá-la na produção, você está sozinho. (Mas você não está de qualquer maneira?) Talvez tenhamos sorte e termos uma inteligência computacional projetando um IPv8 compatível com IPv4 e IPv6 e todas as suas implementações quebradas.

    
por 29.09.2012 / 16:12
2

Eu sou novo na rede, mas também darei meus 2 centavos.

Se eu tiver uma sub-rede / 28 de x.x.x.0 - x.x.x.15 De acordo com as regras predefinidas, teríamos 14 hosts utilizáveis e 2 restantes. os restantes são para rede e transmissão.

Vamos, em vez de seguir a regra acima, realmente usar todos os 16 hosts. Então, nesse caso, tudo ficaria bem, sem problemas. Mas se a comunicação fosse necessária fora da rede, não seria possível devido à falta de recursos para enviar ou receber a informação.

Não sou bom em explicar, mas em outras palavras.

Se eu morasse em uma casa em uma rua e a rua contivesse 14 casas. Uma entrada e saída para acesso à estrada principal.

Meu endereço de correspondência varia de 1-14 Personal Street, Fora da estrada da rede.

Isso não seria problema para o carteiro. Agora vamos supor que os desenvolvedores ficaram gananciosos e adicionaram mais 2 casas e se livraram das vielas.

Então meu novo endereço de correspondência varia de 1-16 Rua Pessoal

Neste caso, o homem do correio estaria com problemas.

Isso é um palpite, me avise se eu estiver falando de touro.

    
por 15.11.2012 / 14:43
0

O endereço de rede permite que você crie tabelas de rotas com colunas de destino de tamanho fixo (IPv4 de 4 bytes) e operações binárias de tamanho fixo, de modo que o roteamento de host e de rede seja realmente a mesma coisa.

Imagine uma tabela de roteamento como esta: (este PC tem uma conexão paralela com outro PC e uma placa de rede)

Dest           Mask    Dev
192.168.0.123  /32     plip0   # This is a single host
192.168.0.0    /24     eth0    # This is a network

O AND entre o endereço IP e a máscara de rede fornece exatamente o que você precisa, um número de 4 bytes que pode ser comparado a cada linha sem mais cálculos.

Portanto, o número de host zero é especial no sentido de que, após a operação AND, seu endereço representa naturalmente toda a rede.

Se você decidiu usar o número da rede como um número de host, isso resultaria em uma tabela como esta:

Dest           Mask    Dev
192.168.0.0    /32     eth0    # This is the host (it's a redundant line)
192.168.0.0    /24     eth0    # This is the network

Isso parece legítimo, então eu suponho que o conceito de endereço de rede é usado por razões de roteamento e, portanto, foi decidido arbitrariamente marcá-lo como um endereço especial e proibir seu uso como um endereço de host.

Bem ... na verdade não é tão simples assim. Eu decidi tentar (!!!):

# route add -net 192.168.0.0/32 eth0
# ping 192.168.0.0
Do you want to ping broadcast? Then -b
# telnet 192.168.0.0
Trying 192.168.0.0...
telnet: connect to address 192.168.0.0: Network is unreachable

Atualmente, os programas de rede não permitem que eu use um número de rede como um endereço normal.

    
por 17.01.2012 / 18:53
0

Enquanto pesquisava a resposta a essa pergunta, deparei-me com este artigo da Cisco. A seguinte citação desse artigo resume bem, eu acho.

[...] consider the IP address 172.16.1.10. If you calculate the subnet address corresponding to this IP address, the answer you arrive at is subnet 172.16.0.0 (subnet zero). Note that this subnet address is identical to network address 172.16.0.0, which was subnetted in the first place, so whenever you perform subnetting, you get a network and a subnet (subnet zero) with indistinguishable addresses. This was formerly a source of great confusion.

Evitar confusão é uma razão boa o suficiente para mim.

    
por 14.03.2014 / 16:57
0

RFC 1122 ("Requisitos para Hosts da Internet - Camadas de Comunicação") proíbe:

IP addresses are not permitted to have the value 0 or -1 for any of the < Host-number>, < Network-number>, or < Subnet- number> fields

    
por 10.12.2014 / 15:48
0

Um endereço de rede não é considerado um endereço de host, mas é apenas um número. Em áreas limitadas de endereço, como redes ponto-a-ponto, uma máscara / 30 é usada com freqüência, mas ainda utiliza os endereços de host. Uma prática menor, mas que atinge o mesmo princípio, é usar uma máscara / 31 e usar uma extremidade como o endereço de rede e outra como a transmissão.

Ex.

Router(config)#int gi0/0
Router(config-if)#ip add 10.0.0.0 255.255.255.254
Router(config-if)#no shut


Router2(config)#int gi0/0
Router2(config-if)#ip add 10.0.0.1 255.255.255.254
Router2(config-if)#no shut


        .0        .1
[Router]-----------[Router2]
   network      broadcast
    
por 25.02.2015 / 05:22

Tags