TCP/IP Архитектура, протоколы, реализация (включая IP версии 6 и IP Security)
Шрифт:
11.7.2 Доставка запроса от клиента на сервер
Клиент не имеет сведений об адресе для направления запроса и отправляет его с IP-адресом источника 0.0.0.0 и IP-адресом приемника 255.255.255.255.
Сервер (или серверы) в одной с клиентом локальной сети услышит посланный запрос. Если клиент заполнил в сообщении "поле" имя хоста сервера, ответит только указанный в этом поле сервер (см. рис. 11.5). Если же имя не указано, ответить могут несколько серверов.
Рис. 11.5.
11.7.3 Использование промежуточного агента
Гораздо удобнее использовать один или несколько централизованных серверов загрузки, чем размещать такие серверы в каждой из локальных сетей. Однако как широковещательный запрос от клиента может достигнуть удаленного сервера по локальной сети? Для этого используется специальная система, помогающая переслать такой запрос (см. рис. 11.6).
Рис. 11.6. Промежуточная пересыпка запроса загрузки на удаленный сервер
Промежуточный агент (relay agent) помогает системе отправить локальный запрос BOOTP на удаленный сервер. В качестве промежуточных агентов используются маршрутизаторы (хотя стандарты позволяют работать в этом режиме и хостам).
Обычно маршрутизатор конфигурируется с IP-адресом (адресами) для пересылки запросов загрузки на один или несколько серверов (так делается в удачных реализациях, хотя стандарты допускают широковещательные рассылки запросов загрузки по указанным соединениям для поиска сервера загрузки, когда его IP-адрес неизвестен, и именно для этого в сообщении загрузки имеется поле счетчика попаданий, препятствующее зацикливанию). Когда промежуточный агент получает от клиента запрос на загрузку, то:
■ Промежуточный маршрутизатор запроса BOOTP проверяет поле. Если оно равно нулю, промежуточный агент вставляет в него IP-адрес интерфейса, по которому и был получен данный запрос. Сервер BOOTP использует этот адрес для возврата ответа загрузки клиенту через промежуточный агент.
■ Затем агент пересылает запрос клиента на один или несколько предварительно указанных адресов серверов.
11.7.4 Присваивание IP-адресов
Администратор конфигурирует сервер BOOTP для присваивания системам IP-адресов посредством ручного создания таблицы отображения на IP-адрес комбинации типа оборудования и аппаратного адреса клиента. Кодирование типов оборудования определяется документом Assigned Numbers. Например, для Ethernet код типа оборудования = 1. Таблица должна выглядеть как:
Тип оборудования | Аппаратный адрес | IP-адрес |
---|---|---|
1 | 02 60 8С 12 14 AA | 128.121.2.5 |
1 | 08 00 20 D3 20 14 | 128.121.2.19 |
Многие реализации включают в таблицу дополнительные столбцы, идентифицирующие имена хостов для удобочитаемости таблицы.
Простейший сценарий для клиента, не знающего своего IP-адреса:
■ Клиент отправляет в широковещательной рассылке запрос (на порт 67 сервера).
■ Сервер получает этот запрос.
■ По типу оборудования и аппаратному адресу клиента сервер выбирает в таблице IP-адрес.
■ Если клиент расположен локально, сервер отправляет ответ в широковещательной рассылке (на порт 68 клиента).
■ Если клиент удален от сервера, ответ посылается на порт 67 по адресу, указанному в поле IP-адреса промежуточного агента. Затем промежуточный агент пересылает его в локальной широковещательной рассылке на клиентскую систему.
11.7.5 Загрузка клиента, знающего собственный IP-адрес
Предположим, что клиент уже предварительно сконфигурирован на определенный IP-адрес или сохранил IP-адрес, присвоенный ему во время прошлой загрузки. В этом случае в поле IP-адреса клиента указывается уже присвоенный ему адрес.
В соответствии с первоначальным стандартом BOOTP сервер может позволить клиенту сохранить старый адрес и будет использовать его в заголовке IP для доставки клиенту ответа. Отметим, что, если после предыдущей загрузки компьютер был физически перемещен в иную подсеть или иную локальную сеть, клиент не сможет получить ответ, поскольку в нем будет использован адрес старой подсети. Решить эту проблему поможет использование протокола DHCP.
11.7.6 Конфигурирование загрузки программного обеспечения
Первоначально предполагалось размещение на одном сервере как конфигурационных данных, так и загружаемого через TFTP программного обеспечения. Однако разделить эти службы очень просто. Сервер конфигурации BOOTP может просто указать IP-адрес хоста для сервера TFTP, а также путь к загружаемому файлу.
Как же сервером BOOTP выбираются сервер TFTP и загружаемый файл, если загружаемое программное обеспечение может быть распределено по нескольким физическим серверам?
Сервер BOOTP можно сконфигурировать с таблицей отображения коротких имен систем в IP-адреса серверов TFTP, содержащих загружаемые файлы, с указанием пути для каждого файла. Например:
Короткое имя | IP-адрес сервера TFTP | Путь к файлу |
---|---|---|
SunOS | 128.121.50.2 | /bin/vmunix |
Клиент BOOTP посылает соответствующее короткое имя на сервер в поле имени загружаемого файла (вместо этого в DHCP используется отдельное поле идентификатора класса). По короткому имени сервер выбирает из таблицы нужные, сведения и помещает полный путь к файлу в поле имени загружаемого файла, а IP-адрес сервера TFTP записывает в поле "IP-адрес сервера" сообщения.