Is an IP packet's destination ever set to the subnet IP address?
Sim. É um IP válido, portanto, pode ser usado.
If yes, in what cases and why?
É simplesmente um dos 255 IPs utilizáveis em um / 24
If no, then why not free up that address for any host to use?
Se você tiver hardware antigo , precisará 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 faz com que seja um bom hábito ignorar esse IP. E os hábitos aprendidos há muito tempo são difíceis de ignorar.
E as pessoas que não conhecem o plano de fundo não o usam porque outras não o usam, por isso deve ser errado usá-lo ou porque não percebem que '0' pode ser um primeiro número.
[Editar] Grezzo acabou de testá-lo no Windows XP, onde o GUI da rede do Windows 'ajudado' impediu essa configuração. O Windows 7 tem o mesmo comportamento. Eu tentei em um host não-windows, onde ele simplesmente funciona. Se você usa Windows, pode ser necessário configurar sua rede manualmente via IPconfig para configurá-la para todos os zeros.
[Editar 2]
Quanto mais eu trabalho com isso, mais confuso fico.
Rfc4632 - Roteamento entre domínios sem classe não parece proibir, mas nem permite explicitamente.
Esta postagem do ServerFault menciona: .
É a mesma pergunta, mas não é uma resposta.
O endereço de rede também é usado nas tabelas de roteamento. Mas não vejo por que isso não funcionaria devido a isso. A mesma notação nas tabelas de roteamento seria encaminhada para a rede correta. Uma vez na rede certa, chegaria a um PC com IP 0.
(Tudo isso por 192.168.1 / 24.
Se você usou 192.168.0 / 23, em seguida, 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 pilha:
E um pensamento:
Destination_IP é provavelmente AND ed com o mastro da rede (uma operação rápida no hardware) antes de ser comparado com as entradas nas tabelas de roteamento. Mas:
(Um IP semi-aleatório) 192.168.0.42 E 255.255.255.0 produziria 192.168.0.0
Mas 192.168.0.0 E 255.255.255.0 também renderiam 192.168.0.0
[Editar 4 - Muito depois de essa resposta ter sido gravada, talvez seja necessário reescrever toda a postagem devido a esta nova informação ]
RFC923 afirma 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 de RFC950 que faz referência a RFC943 (que ficou obsoleta RFC923 acima, mas usa o mesmo idioma para especial endereços):
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.