Может ли сетевой идентификатор IP-адреса содержать 0 и быть действительным?Например, 128.52.0.1
с маской подсети 255.255.255.0
?
Да.Совершенно нормально, чтобы у идентификатора сети был нулевой октет.
Может ли идентификатор узла IP-адреса содержать 0 и быть действительным?Например, 128.52.0.1 с маской подсети 255.255.0.0?
Да.Для идентификатора хоста совершенно нормально иметь нулевой октет, хотя следует помнить, что идентификатор хоста с нулевым битом зарезервирован по соглашению и предназначен для обозначения сети в целом (как и все-один-бит)идентификатор хоста зарезервирован как широковещательный адрес, предназначенный для обозначения каждого хоста в сети).
Кроме того, по какой-то причине я получил его в голову ...
Это правильно, 0.0.0.0/8
используется для самоидентификации в соответствии с RFC5735:
0.0.0.0/8
- Адреса в этом блоке относятся к исходным хостам в этой сети.Адрес 0.0.0.0/32
может использоваться в качестве адреса источника для этого хоста в этой сети;другие адреса в пределах 0.0.0.0/8
могут использоваться для ссылки на указанные хосты в этой сети ([RFC1122], раздел 3.2.1.3).
Соглашение состоит в том, чтобы использовать все единичные биты для обозначения каждого«объект» и все нулевые биты означают этот «объект».Цитирование из "Internetworking with TCP/IP", Douglas E. Comer
:
Использование netid 0 особенно важно в тех случаях, когда хост хочет установить связь по сети, но еще не знает сетевой IP-адрес.Хост временно использует сетевой идентификатор 0, а другие хосты в сети интерпретируют адрес как означающий «эту» сеть.В большинстве случаев в ответах будет полностью указан сетевой адрес, что позволит исходному отправителю записать его для использования в будущем.
В "обычном" мире он может использоваться не так часто, поскольку и BOOTP, иDHCP использует вариант ограниченной широковещательной передачи (все в одном бите) в ситуациях, когда они еще не знают свой идентификатор сети.Но, поскольку RFC не устарел, я думаю, что он все еще действителен.