Приложение II. Примеры
В приведенных здесь примерах предполагается, что запрашивающий хост имеет адрес 36.40.0.123, адрес шлюза — 36.40.0.62, сеть — 36.0.0.0, а поле номера подсети занимает 8 битов.
Сначала предположим, что широковещание разрешено и хост 36.40.0.123 знает свой адрес. Он будет отправилять дейтаграмму:
Source address: 36.40.0.123 Destination address: 36.255.255.255 Protocol: ICMP = 1 Type: Address Format Request = A1 Code: 0
36.40.0.62 будет слышать эту дейтаграмму в ответ на которую ему следует передать отклик:
Source address: 36.40.0.62 Destination address: 36.40.0.123 Protocol: ICMP = 1 Type: Address Format Reply = A2 Code: 8
В качестве следующего примера предположим, что 255.255.255.255 означает «широковещательный адрес данной физической сети», как описано в [RFC919].
Предыдущий пример неэффективен, поскольку запрос может в широковещательном режиме пересылаться во множество подсетей. Более эффективный метод, который мы рекомендуем, заключается в том, что хост сначала определяет свой адрес (возможно с помощью протокола RARP, описанного в [RFC903]), а после этого передает запрос ICMP по адресу 255.255.255.255:
Source address: 36.40.0.123 Destination address: 255.255.255.255 Protocol: ICMP = 1 Type: Address Format Request = A1 Code: 0
Шлюз в этом случае может напрямую ответить запрашивающему хосту.
Предположим, что 36.40.0.123 является бездисковой станцией, которая не знает даже свой номер хоста. Она может передать дейтаграмму:
Source address: 0.0.0.0 Destination address: 255.255.255.255 Protocol: ICMP = 1 Type: Address Format Request = A1 Code: 0
36.40.0.62 услышит эту дейтаграмму, на которую ему следует ответить дейтаграммой:
Source address: 36.40.0.62 Destination address: 36.40.255.255 Protocol: ICMP = 1 Type: Address Format Reply = A2 Code: 8
Отметим, что шлюз использует максимально «узкий» широковещательный адрес для отклика (передача отклика по адресу 36.255.255.255 приведет к рассылке отклика во множество подсетей в дополнение к той, которой он предназначен). Но даже в этом случае излишнее использование широковещания приведет к неоправданному росту широковещательной нагрузки на все хосты подсети, поэтому рекомендуется использовать «анонимный» адрес отправителя запросов как можно реже.
Если широковещание не разрешено, мы предполагаем, что хост имеет «встроенную» информацию о соседних шлюзах. Таким образом, 36.40.0.123 может передать дейтаграмму:
Source address: 36.40.0.123 Destination address: 36.40.0.62 Protocol: ICMP = 1 Type: Address Format Request = A1 Code: 0
36.40.0.62 следует отвечать на эту дейтаграмму, как в предыдущем случае.