ICMP.

Рис. 7.3. Типы сообщений об ошибках ICMP

Таблица 7.1 Сообщения об ошибках ICMP

Сообщение Описание
Destination Unreachable (недостижимая точка назначения) Датаграмма не может достичь хоста назначения, утилиты или приложения.
Time Exceeded (время закончилось) Маршрутизатор определил завершение времени жизни, или закончилось время на сборку фрагментов в хосте назначения.
Parameter Problem (проблема с параметром) В заголовке IP неверный параметр.
Source Quench (подавление источника) Перегружен маршрутизатор или система назначения (системам рекомендуется не отправлять это сообщение).
Redirect (перенаправление) Хост направил датаграмму на неверный локальный маршрутизатор.

7.2.2 Обязанность по отправке сообщения ICMP

Протокол ICMP определяет, что сообщения могут или должны быть посланы в каждом случае, но он не требует выдавать сообщения ICMP о каждой ошибке.

В этом есть здравый смысл. Основным назначением маршрутизатора в сети является пересылка датаграмм. Перегруженный хост назначения должен уделять больше времени доставке датаграмм в приложения, а не указанию на ошибки удаленному хосту. Именно поэтому не формируются сообщения о случайном отбрасывании датаграммы.

7.2.3 Входящие сообщения ICMP

Что происходит при получении хостом сообщения ICMP? Рассмотрим пример, когда производится попытка обращения по зарезервированному (и, следовательно, недостижимому) адресу сети:

> telnet 10.1.1.1

Trying 10.1.1.1 ...

telnet: connect: Host is unreachable

Произошло то, что и должно было произойти,— в сообщении указано на недостижимость хоста (Host is unreachable).

Чтобы определить, какой из маршрутизаторов послал сообщение ICMP, можно использовать команду traceroute:

> traceroute 10.1.1.1

traceroute to 10.1.1.1 (10.1.1.1), 30 hops max, 40 byte packets

> nomad-gateway (128.121.50.50) 2 ms 2 ms 2 ms

> liberty-gateway (130.94.40.250) 91 ms 11 ms 78 ms

> border2-hssi2-0.NewYork.mci.net (204.70.45.9) !H !H ! H

Маршрутизатор New York послал сообщение Destination Unreachable, которое отображается на экране как !Н.

Функции traceroute основаны на ICMP-сообщении Time Expired и формируются следующим образом:

■ Создается короткое сообщение UDP, которое имеет заголовок IP с установленным в 1 полем TTL.

■ Трижды отправляется датаграмма.

■ Первый маршрутизатор (в примере — nomad-gateway) устанавливает значение Time-to-Live (время жизни) в 0, отбрасывает датаграмму и отправляет источнику ICMP-сообщение Time Expired.

■ Функция traceroute идентифицирует пославший сообщение маршрутизатор и трижды выводит само сообщение.

■ Значение Time-to-Live устанавливается в 2, и сообщение посылается дальше.

■ Процесс повторяется с увеличением Time-to-Live на каждом шаге.

Если можно достичь точки назначения, то в итоге можно получить полный путь до него.

7.3 Когда не нужно посылать сообщение ICMP

Напомним, что ICMP-сообщение об ошибке посылается, когда в сети не все благополучно. Важно обеспечить, чтобы трафик ICMP не перегружал сети, делая ситуацию еще хуже. Для этого протокола, требуется ввести несколько очевидных ограничений. ICMP не должен формировать сообщения о:

■ Маршрутизации и доставке ICMP-сообщений messages

■ Широковещательных и многоадресных датаграммах

■ Фрагментах датаграмм, кроме первых

■ Сообщениях, чей адрес источника не идентифицирует уникальный хост (например, IP- адреса источников 127.0.0.1 или 0.0.0.0)

Добавить отзыв
ВСЕ ОТЗЫВЫ О КНИГЕ В ИЗБРАННОЕ

0

Вы можете отметить интересные вам фрагменты текста, которые будут доступны по уникальной ссылке в адресной строке браузера.

Отметить Добавить цитату