RFC: 917
Оригинал: Internet Subnets
Категория: Не определено
Дата публикации:
Автор:
Перевод: Николай Малых

2.4. Определение размера поля номера подсети

Как хост (или шлюз) может определить использование поля номера подсети в подключенной к нему сети? Эта проблема аналогична проблемам, возникающим при загрузке хостов Internet, — как хост может узнать свой адрес и адрес шлюза в своей сети? Для всех ситуаций существует два варианта решения этих проблем — «аппаратная» информация и протоколы на основе шероковещания.

«Аппаратная» информация удобна для изолированных (не подключенных к сети) хостов. Она может быть «встроена» или храниться в дисковом файле (предпочтительно). Однако для широко распространенного случая загрузки бездисковых станций через ЛВС, «аппаратная» информация не подходит. Если технология ЛВС поддерживает широковещание, лучшим методом будет использование «свежезагруженным» хостом широковещательной передачи запроса на получение требуемой информации. Например, для определения адреса IP хост может использовать протокол обратного преобразования адресов RARP [RFC903].

Мы предлагаем расширить протокол ICMP [RFC792], добавив пару типов сообщений — Address Format Request и Address Format Reply, аналогичных сообщениям Information Request и Information Reply (см Приложение I).

Новые сообщения ICMP используются следующим образом — хост при загрузке передает широковещательное сообщение Address Format Request, а шлюз (или хост, действующий вместо шлюза), получив такое сообщение, будет передавать отклик Address Format Reply. Если в запросе отправитель не был указан (поле IP Source Address имеет значение 0), отклик также передается в широковещательном сообщении. Запросивший информацию хост получит это сообщение и сможет определить размер поля номера подсети.

Поскольку для каждой конкретной ЛВС в сообщении Address Format Reply может содержаться только одно значение, нет необходимости проверять соответствие отклика запросу. Даже при получении отклика от нескольких шлюзов, информация во всех сообщениях будет совпадать. Предполагается, что хосты перезагружаются достаточно редко, поэтому количество широковещательных сообщений для определения маски будет достаточно мало.

Если хост подключен к множеству ЛВС, он должен использовать этот протокол для каждой из сетей, пока не будет обнаружено (по отклику одной из ЛВС), что некоторые ЛВС относятся к одной сети и, следовательно, имеют одинаковый размер поля номера подсети.

Одной из возможных проблем является отсутствие сообщений «Address Format Request» после разумного числа попыток запроса. Возможны три причины возникновения таких ситуаций:

  1. Локальная сеть постоянно изолирована от всех других сетей.
  2. Подсети не используются и ни один из хостов не поддерживает таких запросов ICMP.
  3. Все шлюзы локальной сети (временно) находятся в нерабочем состоянии (down).

В первых двух случаях подразумевается, что поле номера подсети имеет нулевой размер. В третьем случае не существует способа определить размер поля номера подсети и самым безопасным вариантом будет считать этот размер нулевым. Хотя позднее может обнаружиться некорректность такого выбора, это не порождает проблем при передаче. После того, как восстановится нормальная работа шлюза, он будет передать широковещательное сообщение Address Format Reply; когда хост получит это сообщение, он сможет заменить свои допущения полученным от шлюза значением. Хостам и шлюзам не следует передавать сообщений Address Format Reply с «предполагаемой» маской.

В заключение отметим, что хост не обязан использовать протокол ICMP для определения размера поля номера подсети — параметры хоста могут сохраняться в энергонезависимой памяти.

2007 - 2017 © Русские переводы RFC, IETF, ISOC.