Приложение II. Примеры
Приведенные здесь примеры показывают, как хост может определить адресную маску, используя сообщения ICMP Address Mask Request и Address Mask Reply. В примерах предполагается, что 255.255.255.255 означает широковещательный адрес для физической среды (см. RFC-919 [6]).
Приложение II.1. Сеть класса A
Предположим, что запрашивающий маску хост сети класса A 36.0.0.0 имеет адрес 36.40.0.123, адрес шлюза 36.40.0.62, а поле номера подсети имеет размер 8 битов, т.е., маска имеет значение 255.255.0.0.
Для хоста наиболее эффективно (рекомендуется поступать именно так) будет определить сначала свой адрес (например, с помощью RARP [4]) и только после этого передавать запрос ICMP по адресу 255.255.255.255:
Адрес отправителя: 36.40.0.123 Адрес получателя: 255.255.255.255 Протокол: ICMP = 1 Тип: Address Mask Request = AM1 Код: 0 Маска: 0
Шлюз может адресовать свой отклик непосредственно запрашивающему хосту.
Адрес отправителя: 36.40.0.62 Адрес получателя: 36.40.0.123 Протокол: ICMP = 1 Тип: Address Mask Reply = AM2 Код: 0 Маска: 255.255.0.0
Предположим, что хост 36.40.0.123 является бездисковой станцией и не знает своего номера. В таком случае хост может передать следующую дейтаграмму:
Адрес отправителя: 0.0.0.0 Адрес получателя: 255.255.255.255 Протокол: ICMP = 1 Тип: Address Mask Request = AM1 Код: 0 Маска: 0
Шлюз 36.40.0.62 получит эту дейтаграмму и передаст отклик:
Адрес отправителя: 36.40.0.62 Адрес получателя: 255.255.255.255 Протокол: ICMP = 1 Тип: Address Mask Reply = AM2 Код: 0 Маска: 255.255.0.0
Отметим, что шлюз использует минимальную из возможных областей широковещания (физическую сеть) для передачи отклика. Но даже в таком случае использование широковещания приводит к росту нагрузки на все хосты подсети, поэтому использования анонимного адреса отправителя (0.0.0.0) следует избегать.
Если широковещание не поддерживается, мы предполагаем, что хост имеет "аппаратную" возможность определения соседнего шлюза. В таких случаях хост 36.40.0.123 может передать дейтаграмму:
Адрес отправителя: 36.40.0.123 Адрес получателя: 36.40.0.62 Протокол: ICMP = 1 Тип: Address Mask Request = AM1 Код: 0 Маска: 0
Шлюз 36.40.0.62 будет отвечать точно так ж, как для предыдущего случая.
Адрес отправителя: 36.40.0.62 Адрес получателя: 36.40.0.123 Протокол: ICMP = 1 Тип: Address Mask Reply = AM2 Код: 0 Маска: 255.255.0.0