Выбрать главу

7.2.1 Типы сообщений об ошибках

На рис. 7.3 показаны обобщенные сообщения, формируемые маршрутизатором и хостом назначения для отчета о возникшей проблеме. В таблице 7.1 перечислены формальные имена сообщений об ошибках 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)

7.4 Формат сообщения ICMP

Сообщение ICMP переносится в части данных датаграммы IP. Каждое сообщение ICMP начинается тремя одинаковыми полями: полем типа (Type), полем кода (Code), обеспечивающим более подробное описание ошибки, и полем контрольной суммы (Checksum). Формат оставшейся части сообщения определяется типом сообщения.

Сообщение об ошибке ICMP обрамляется заголовком IP. Добавляются первые 8 октетов датаграммы, которая привела к ошибке. Эти сведения позволяют проанализировать причину ошибки, поскольку содержат информацию о предполагаемом назначении датаграммы и целевом протоколе четвертого уровня. Дополнительные 8 байт позволяют определить коммуникационный элемент приложения (более подробно об этом см. в разделе о протоколах TCP и UDP).

В сообщение включается и контрольная сумма ICMP, начиная от поля Type.

7.4.1 Сообщение Destination Unreachable

Существует много причин прекращения доставки датаграммы. Разорванная связь физически не позволит маршрутизатору достичь подсети назначения или выполнить пересылку в точку следующего попадания. Хост назначения может стать недоступным при отключении его для проведения профилактики.

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

Рис. 7.4. Формат ICMP-сообщения Destination Unreachable

Формат сообщения Destination Unreachable показан на рис. 7.4. Поле Type (в нашем случае 3) идентифицирует именно этот тип сообщения. Поле Code отражает причину отправки сообщения. Полный список кодов этого поля представлен в таблице 7.2.

Таблица 7.2 Коды ошибок сообщения Destination Unreachable

Код Смысл
0 Сеть недостижима.
1 Хост недостижим.
2 Запрашиваемый протокол не поддерживается в точке назначения.
3 Порт недостижим (недоступно удалённое приложение).
4 Необходима фрагментация, но установлен флаг "Не фрагментировать".
5 Неверен маршрут от источника.
6 Неизвестна сеть назначения.
7 Неизвестен хост назначения.
8 Хост источника изолирован.
9 Административно запрещены коммуникации с сетью назначения.
10 Административно запрещены коммуникации с хостом назначения.
11 Сеть недостижима для заданного типа обслуживания.
12 Хост недостижим для заданного типа обслуживания.