Докумен т RF C 919 , Broadcasting Internet Datagrams (Широковещательна я передача дейтаграмм Интернета) четко определяет широковещательный адрес как адрес, все биты раздела узла которого установлены в значение. Столь точное определение широковещательного адреса позволяет программе ifconfig вычислить его автоматически, так что всегда есть возможность использовать значение по умолчанию.

К сожалению, в примере раздела «Проверка интерфейса посредством ifconfig» пользователь выбрал широковещательный адрес, все биты раздела узла которого имеют нулевое значение, что не позволяет использовать значение по умолчанию.

Чтобы исправить ошибку, укажем широковещательный адрес для сетевого устройства при помощи ключевого слова broadcast команды ifconfig. Следующая команда определяет широковещательный адрес интерфейса dnetO узла crab:

  • ifconfig dnetO 172.16.12.1 netmask 255.255.255.0 broadcast 172.16.12.255

Обратите внимание, что широковещательный адрес указывается относительно локальной подсети, crab считает данный интерфейс частью сети 172.16.12.0; следовательно, широковещательный адрес интерфейса - 172.16.12.255. В зависимости от реализации система Unix может интерпретировать адрес 172.16.255.255 как адрес узла 255 подсети 255 сети 172.16.0.0 либо как широковещательный адрес подсети books-net в целом, но ни в коем случае не как широковещательный адрес подсети 172.16.12.0.

Системы Solaris позволяют косвенно устанавливать широковещательный адрес по значению маски, определенному в файле /etc/inet/netmasks, если таковой используется. В предыдущем разделе мы видели, что аргумент net-mask + приводит к извлечению сетевой маски из файла. Аналогичным образом, аргумент broadcast + предписывает вычислить корректный широковещательный адрес на основе значения маски из файла netmasks:

  • ifconfig dnetO 172.16.12.1 netmask + broadcast +

Предположим, что в файле netmasks определена маска 255.255.255.0. Система Solaris знает, что первые три байта определяют сеть, а четвертый байт определяет адрес узла. Поскольку стандартный широковещательный адрес состоит из битов сети в сочетании с битами узла, установленными в значение 1, Solaris легко вычисляет этот адрес: 172.16.12.255.

В Linux задача решается еще проще. Файл ifcfg-eth0 системы Red Hat из примера четко определяет широковещательный адрес следующей строкой:

BR0ADCAST=172.16.12.255

Чтобы изменить широковещательный адрес, отредактируйте данную строку и файле ifcfg-ethO.