Почему я не могу использовать первый или последний адрес в подсети?

37

У меня есть сеть с диапазоном 10.0.0.0/24. Это означает, что у меня есть 10.0.0.0 до 10.0.0.255, однако я не могу использовать 10.0.0.0 или 10.0.0.255, но я могу использовать что угодно между этим.

Почему это? Маска 255.255.255.0 подразумевает, что последняя цифра является адресом хоста, так почему я не могу использовать 0 или 255?

TheBro21
источник
7
Обратите внимание, что это только для IPv4. IPv6 имеет разные правила, касающиеся первого и последнего адреса в подсети.
Майкл Хэмптон
1
В Linux у вас не будет проблем с использованием первого адреса. Некоторые старые системы считают, что .0 - это широковещательный адрес и не позволяют вам его использовать, но это неправильно :)
Navin

Ответы:

70

В / 24 сети вы не можете использовать, 0потому что это идентификация сети (устройства используют ее для распознавания различных сетей, к которым они подключены).

На ПК с Windows откройте командную строку и введите netstat -r. Вы получите таблицу маршрутизации, используемую ПК, каждая сеть указана с использованием идентификатора сети (первый адрес).

введите описание изображения здесь

Последний адрес, 255в случае сети / 24, является широковещательным адресом. Устройства, подключенные к сети, используют его для отправки широковещательного сообщения, предназначенного для всех устройств в сети.

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

jcbermu
источник
9
Для / 31 есть специальное исключение: предполагается, что это неявные ссылки «точка-точка», потому что они имеют только два адреса.
Саймон Рихтер
10
Размещение вашего публичного IP-адреса и имени пользователя для указанной системы дает мне хиби-джеби.
mikeazo
8
@mikeazo Почему? У вас есть приличные пароли и fail2ban, верно? Кроме того, каждый IPv4-адрес в Интернете подвергается атаке.
Майкл Хэмптон
4
@MichaelHampton, потому что теперь Интернет знает его имя пользователя, его IP-адрес и то, что он (успешно) не использует ключи SSH, а вместо этого пароли. Это уже уточняет пространство поиска. Но вы правы: для профессионала это не должно быть проблемой. Это не хорошая практика, чтобы учить мир, хотя.
Конерак
29
@mikeazo Это скриншот, который я нашел в Google netstat -r. Это не моя система.
jcbermu
8

Обратите внимание, что вы не можете использовать первый и последний адрес в диапазоне если он используется для нумерации устройств в широковещательном домене (т. Е. Физической сети или vlan и т. Д.). Поскольку другой ответ действительно указывает, что первый и последний используются в качестве сетевого и широковещательного адресов соответственно в этом сценарии. Кроме того, в некоторых сценариях первый адрес также интерпретируется как широковещательный.

Однако существуют и другие сценарии использования, в которых вы можете использовать первый и последний адрес. Например, если вы являетесь администратором брандмауэра, и сетевой администратор предоставил вам диапазон 10.0.0.0-10.0.0.255 , то вы можете использовать все 256 адресов в качестве адресов NAT на брандмауэре. Я признаю, что я не видел, чтобы это делалось очень часто, и когда это сделано, это может вызвать некоторую путаницу - поскольку первая реакция большинства людей - думать, что это не разрешено, - и эта путаница вполне может быть причиной, чтобы советовать против этого.

Если вы придирчивы, то хорошо, строго говоря, 10.0.0.0-10.0.0.255 в этом сценарии не является сетью / 24 , это диапазон или блок адресов, но я считаю, что все еще принято называть это «подсеть 10.0.0.0/24» в таком сценарии.

hertitu
источник
7
«Я признаю, что я не видел, чтобы это делалось очень часто, и когда это будет сделано, это может вызвать некоторую путаницу - поскольку первая реакция большинства людей - думать, что это не разрешено, - и эта путаница вполне может быть причиной, чтобы советовать против этого». - Если я правильно помню, некоторые из этих «сбитых с толку людей» являются разработчиками сетевого стека Windows NT (по крайней мере, оригинального до Vista), так что, если вы не готовы иметь дело с пользователями Windows, жалующимися на то, что их компьютер работает во всех сети, кроме вашей, и объясните им, что это вина Microsoft, а не ваша, вам было бы неплохо просто ...
Йорг Миттаг
9
оставьте эти два адреса неиспользованными.
Йорг Миттаг,
1
@ JörgWMittag, подождите, вы говорите, что, учитывая сеть 10.0.0.0/22 ​​(то есть 10.0.0.0-10.0.3.255), Windows до 7 не может использовать 10.0.1.0 или 10.0.2.255? (Хотя я не думаю, что это больше имеет значение, поскольку старые версии больше не поддерживаются)
ilkkachu
2
@ilkkachu: Я не уверен, как вы пришли к этим цифрам. Сетевой адрес для 10.0.0.0/22 ​​- 10.0.0.0, а широковещательный адрес - 10.0.3.255. Если я правильно помню, существуют определенные проблемы с использованием (хотя бы одного) этих двух адресов в сети с компьютерами Windows со старым (до Vista) стеком TCP / IP. Я не помню точно, что это были за проблемы, и если эти проблемы существуют только тогда, когда вы пытаетесь назначить один из этих IP-адресов на ПК с Windows или если есть также проблемы со связью между ПК с Windows и этими IP-адресами. Я также не помню, является ли это сеть ...
Йорг W Mittag
2
@ JörgWMittag ilkkachu Даже сегодня, с переменными подсетями, у нескольких ОС (не только Windows) и многих других программ возникают проблемы с использованием любого адреса, заканчивающегося 0 или 255. Даже если он действителен как внутренний адрес диапазона> 256 , Это остаток адресации класса A / B / C, и программист полагает, что любой компьютер находится в подсети класса C и, следовательно, 0 и 255 по определению недопустимы. Даже если ваша ОС и программное обеспечение делают это правильно, все равно можно подключиться к другому компьютеру, который имеет проблемы с ним. Лучше всего избегать .0 и .255, даже если они действительны в вашей настройке.
Тонни
4

В разделе « Стандартная процедура подсетей в Интернете» , « К стандартной схеме интернета для подсетей и, в частности, в широковещательной передаче данных в Интернете» в разделе 7 « Присутствие подсетей» дается объяснение выбора, который вы предлагаете.

Ваша гипотеза верна для подсетей CIDR с случайными битовыми масками.

Адрес широковещательной рассылки проще расценивать как Bcast = Host | ~Mask. Это явно игнорирует выбор битов в подсети. Соответственно сетевой адрес есть Net = Bcast & ~Mask.

Строго говоря, можно использовать адрес со всеми нулями (.0 для CIDR / 24), но это может привести к путанице в некоторых программах, тогда как все (0.255) зарезервированы как общеизвестный широковещательный адрес.

Некоторые ранние выпуски BSD Unix 4.2 до RFC 919 были отправлены с использованием Netадреса в качестве широковещательной рассылки. Это вызвало некоторую путаницу в смешанных средах до выпуска 4.3.

Пекка
источник
1

Сетевой адрес

Сеть для локальной сети (LAN) или глобальной сети (WAN) предоставляется с адресом в зависимости от их емкости. Терминалы, подключенные к сети, используют эти адреса для связи друг с другом. Система по умолчанию резервирует некоторый адрес для связи администратора. Обычно адреса «255» используются для трансляции сообщений в системах Linux или Fedora. Администратор использует этот адрес для широковещательной рассылки или адреса всех пользователей сети. В случае аварийного отключения администратор может передать сообщение своим пользователям, чтобы сохранить их действия. Некоторые операционные системы позволяют назначать адрес «0».

Узнайте больше об основах работы в сети: сетевая адресация от Microsoft

Также посмотрите на Что такое трансляция сетевых адресов?

Bellatechie30
источник