ネットワークアドレスを使用すると、固定サイズ(4バイトIPv4)の宛先列と固定サイズのバイナリ操作を使用してルートテーブルを構築できるため、ホストルーティングとネットワークルーティングは実際には同じものになります。
次のようなルーティングテーブルを想像してください:(このPCは別のPCおよびネットワークカードと並列接続されています)
Dest Mask Dev
192.168.0.123 /32 plip0 # This is a single host
192.168.0.0 /24 eth0 # This is a network
IPアドレスとネットマスクのANDは、必要なものを正確に提供します。4バイトの数値は、さらに計算することなく各行と比較できます。
したがって、ホスト番号ゼロは、AND演算後、そのアドレスがネットワーク全体を自然に表すという意味で特別です。
ネットワーク番号をホスト番号として使用することにした場合、次のような表が作成されます。
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
これは正当なように思えるので、ネットワークアドレスの概念はルーティングの理由で使用されるため、それを特別なアドレスとしてマークし、ホストアドレスとしての使用を禁止することが任意に決定されたと思います。
まあ...実際にはそれほど簡単ではありません。私はそれを試してみることにしました(!!!):
# 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
現在、ネットワークプログラムでは、ネットワーク番号を通常のアドレスとして使用できません。