Для чего используется сетевой адрес (xxx0)?

Как представляется, обычной практикой является не использовать первый адрес в подсети, то есть IP 192.168.0.0/24или более экзотический пример будет 172.20.20.64/29,

ipcalc Инструмент, который я часто использую, следует той же практике:

$ ipcalc -n -b 172.20.20.64/29
Address:   172.20.20.64         
Netmask:   255.255.255.248 = 29 
Wildcard:  0.0.0.7              
=>
Network:   172.20.20.64/29      
HostMin:   172.20.20.65         
HostMax:   172.20.20.70         
Broadcast: 172.20.20.71         
Hosts/Net: 6                     Class B, Private Internet

Но почему это HostMin это не просто 64 в этом случае? 64 адрес является действительным адресом, верно? И каков бы ни был ответ, относится ли то же самое к IPv6?

Возможно, это немного связано: представляется также возможным использовать порт TCP 0 и порт UDP 0. Они действительны или используются где-либо?

8 ответов

Решение

Как указали Уэсли, Чоппер3 и Вилли, в современном соглашении в качестве широковещательного адреса используется первый адрес (все номера узлов равны нулю) для подсети и последний адрес (все номера узлов).

По историческим причинам многие ОС рассматривают первый адрес как широковещательный. Например, pinging xxx0 из OS X, Linux и Solaris в моей локальной (/24) сети получает ответы. Windows не позволяет вам пинговать первый адрес по умолчанию, но вы можете включить его с помощью метода SetIPUseZeroBroadcast WMI. Интересно, не могли бы вы использовать.0 в качестве адреса хоста в сети, полностью работающей под Windows.

Я знаю, что это старая ветка, но я сам исследовал ее и не остановился на том, что "ноль хоста не используется, потому что это номер сети", потому что я не мог понять, почему это имеет значение. Даже если это номер сети, он не должен мешать его использованию в качестве действительного адреса, поскольку механизм определения номера сети (И масок сети) все равно будет работать с ним для определения номера сети.

Не использовать все адреса хоста, потому что он совпадает с широковещательным адресом, с которым мне было удобно, так как он уже является действительным адресом назначения, поэтому при его использовании было бы невозможно различить их.

Более полно объясненная причина, по которой мы не можем использовать нулевой узел, заключается в том, что он также является широковещательным адресом - хотя в разделе 4.2.3.1 RFC1812 говорится, что маршрутизатор, принимающий адресованные ему пакеты, "ДОЛЖЕН молча отбрасывать их" (их акцент - не мой). Однако тот же параграф разрешает рассматривать эти пакеты как широковещательную рассылку.

Вот полный подраздел

   (2) SHOULD silently discard on receipt (i.e., do not even deliver to
    applications in the router) any packet addressed to 0.0.0.0 or {
    <Network-prefix>, 0 }.  If these packets are not silently
    discarded, they MUST be treated as IP broadcasts (see Section
    [5.3.5]).  There MAY be a configuration option to allow receipt
    of these packets.  This option SHOULD default to discarding
    them.

Потому что первый адрес в подсети относится к самой подсети и используется для целей маршрутизации.

В первые дни Интернета ххх0 использовался как широковещательный адрес для сети. Это было позже изменено на xxx255. Я помню, что в SunOS были опции для настройки трансляции как.0 или.255 в течение этого периода. Так что я думаю, для безопасности.0 и.255 всегда были зарезервированными числами.

Первый номер в подсети - это адрес самой сети. поэтому 192.168.0.0/24 - это номер, который используется для ссылки на эту подсеть. Конечно, последний адрес - это широковещательный адрес, на который отправляются широковещательные сообщения, а затем отправляются всем клиентам в этой подсети. В IP-сети вы всегда удаляете 2 из широковещательного адреса, чтобы найти общее количество адресуемых IP-адресов. 192.168.0.0/24 имеет широковещательную передачу 192.168.0.255 и, следовательно, 253 адресуемых адреса. 192.168.0.0/26 имеет широковещательную передачу 192.168.0.64 и, таким образом, 62 адресуемых адреса.

(Чоп и Вилли опередили меня, но я раздражительный и не хочу удалять мой пост. =))

Номер хоста 0 в каждой подсети зарезервирован главным образом потому, что он был широковещательным адресом.

RFC говорит, перефразируя, следует отбросить, но, в качестве альтернативы, использовать как широковещательную рассылку, но также использовать в качестве номера хоста через некоторую нестандартную опцию.

Теперь октет 0, как в xyz0, вполне может быть совершенно допустимым ненулевым номером хоста CIDR, но в прошлом очень редко возникали проблемы на изолированных сайтах из-за ошибок реализации (возможно, остатка полного кода класса) в HW сайта или SW.

Сегодня октет 0 работает достаточно хорошо, чтобы быть назначенным интернет-провайдерами и облачными платформами, хотя, без сомнения, некоторые сервисы намеренно не раздают его, основываясь на прошлом опыте.

Интересно, что все, что требуется для поддержки узла 0 на любом конкретном сайте, - это поддержка точных устройств, присутствующих в локальной подсети... как только пакет агрегируется в восходящем направлении, даже невозможно будет узнать, что это на самом деле (CIDR) номер хоста 0 используется. WAN было бы все равно.

Наконец, если хосты локальной подсети используют номер хоста all-1 для широковещательных рассылок и не используют специальный номер хоста all-0, вы можете оставить маршрутизатор по умолчанию и иметь только скрытую локальную станцию. Это может быть полезно для защиты встроенных систем, таких как хакерские дешевые потребительские маршрутизаторы...

xxx0 (или первый адрес в подсети) является сетевым адресом и используется для определения того, какой трафик находится в той же подсети, а какой необходимо направить в другую сеть.

Для каждого блока CIDR существует два зарезервированных IP-адреса. Один из них - это номер сети, и он будет четным (бит 0) выключен. Другой - это направленный braodcast (широковещательная передача в подсети), и для него будет установлена ​​вся часть узла сети (нечетное число). Вот пример из моего калькулятора подсети:

Network           Net Broadcast     CIDR Mask              UsableHosts 
192.168.254.0     192.168.254.31    27   255.255.255.224   30          AVL  isPrivate, isClassC
192.168.254.32    192.168.254.47    28   255.255.255.240   14          AVL  isPrivate, isClassC
192.168.254.48    192.168.254.55    29   255.255.255.248   6           AVL  isPrivate, isClassC
192.168.254.56    192.168.254.59    30   255.255.255.252   2           REQ 2  isPrivate, isClassC
192.168.254.60    192.168.254.63    30   255.255.255.252   2           REQ 2  isPrivate, isClassC
Другие вопросы по тегам