O destino de um pacote IP já foi definido como o endereço IP da sub-rede?
Sim. É um IP válido para que possa ser usado.
Se sim, em que casos e por quê?
É simplesmente um dos 255 IPs utilizáveis em um / 24
Se não, por que não liberar esse endereço para qualquer host usar?
Se você possui um hardware antigo , precisa verificar se ele usa o primeiro ou o último endereço como endereço de rede. (.0 ou .255 para redes com máscara FF.FF.FF.00)
Isso torna um bom hábito pular esse IP. E hábitos aprendidos há muito tempo são difíceis de ignorar.
E as pessoas que não conhecem o plano de fundo também não o usam 'porque outros também não o usam, portanto deve ser errado usá-lo' ou porque não percebem que '0' pode ser o primeiro número.
[Editar] Grezzo acabou de testá-lo no Windows XP, onde a GUI de rede do Windows 'útil' impediu essa configuração. Windows 7 tem o mesmo comportamento. Eu tentei em um host que não fosse o Windows, onde simplesmente funciona. Se você usa o Windows, pode ser necessário configurar sua rede manualmente via IPconfig para configurá-la com todos os zeros.
[Editar 2]
Quanto mais trabalho com isso, mais confuso fico.
Rfc4632 - O roteamento entre domínios sem classe
não parece proibi-lo, mas também não permite explicitamente.
Esta publicação do ServerFault menciona: "Por motivos históricos, muitos sistemas operacionais tratam o primeiro endereço como uma transmissão. Por exemplo, o ping xxx0 do OS X, Linux e Solaris na minha rede local (/ 24) obtém respostas. O Windows não permite executar ping o primeiro endereço por padrão, mas você pode habilitá-lo usando o método WMI SetIPUseZeroBroadcast. Gostaria de saber se você conseguirá usar .0 como endereço de host em uma rede totalmente Windows. " .
É a mesma pergunta, mas não uma resposta.
O endereço de rede também é usado em tabelas de roteamento. Mas não vejo por que não funcionaria devido a isso. A mesma notação nas tabelas de roteamento seria direcionada para a rede correta. Uma vez na rede correta, chegaria a um PC com IP 0.
(Tudo isso para um 192.168.1 / 24.
Se você usasse 192.168.0 / 23, o 192.168.1.0 seria um valor válido e seguro no meio do intervalo)
[Editar 3]
Mais um link para a mesma pergunta. Parece um pouco popular na troca de pilhas:
/superuser/379451/why-can-a-network-address-not-be-a-valid-host-address
E um pensamento:
O IP de destino provavelmente é AND com o mastro da rede (uma operação rápida em hardware) antes de ser comparado às entradas nas tabelas de roteamento. Mas:
(Um IP semi-aleatório) 192.168.0.42 AND 255.255.255.0 produziria 192.168.0.0
Mas 192.168.0.0 AND 255.255.255.0 também produziria 192.168.0.0
[Editar 4 - Muito tempo depois que esta resposta foi escrita - talvez seja necessário reescrever a postagem inteira devido a essas novas informações ]
A RFC923 declara na página 3 que:
In certain contexts, it is useful to have fixed addresses with
functional significance rather than as identifiers of specific
hosts. When such usage is called for, the address zero is to be
interpreted as meaning "this", as in "this network". The address
of all ones are to be interpreted as meaning "all", as in "all
hosts". For example, the address 128.9.255.255 could be
interpreted as meaning all hosts on the network 128.9. Or, the
address 0.0.0.37 could be interpreted as meaning host 37 on this
network.
Citando @ylearn em nosso site de engenharia de rede
Eu acredito que a primeira documentação disso vem do RFC950, que faz referência ao RFC943 (que obsoleto RFC923 acima, mas usa o mesmo idioma para endereços especiais):
It is useful to preserve and extend the interpretation of these
special addresses in subnetted networks. This means the values
of all zeros and all ones in the subnet field should not be
assigned to actual (physical) subnets.
ifconfig
não se queixa quando você define o endereço de host de 24 redes como 0 ou 255. Tente usá-lo.