TCP/IP Архитектура, протоколы, реализация (включая IP версии 6 и IP Security)
Шрифт:
Средства для лечения таких неисправностей предоставляет протокол управляющих сообщений Интернета (Internet Control Message Protocol — ICMP). Он выполняет роль сетевого помощника, способствуя маршрутизации в хостах и обеспечивая сетевого администратора средствами определения состояния сетевых узлов. Функции ICMP являются важной частью IP. Все хосты и маршрутизаторы должны быть способны генерировать и обрабатывать сообщения ICMP. При правильном использовании эти сообщения могут улучшить выполнение сетевых операций.
Сообщения ICMP пересылаются в датаграммах IP с обычным заголовком IP (см. рис. 7.1), имея в поле
Рис. 7.1. Пакетирование сообщения ICMP
7.2 Сообщения об ошибках ICMP
Бывают ситуации, приводящие к отбрасыванию (удалению из сети) датаграммы IP. Например, точка назначения может стать недоступной из-за обрыва связи. Или может завершиться время жизни датаграммы. Маршрутизатор не сможет переслать длинную датаграмму при запрещении фрагментации.
При отбрасывании датаграммы по адресу ее источника направляется сообщение ICMP, указывающее на возникшую проблему. На рис. 7.2 показано сообщение ICMP, направленное к источнику датаграммы.
Рис. 7.2. Сообщение ICMP направляется по пути трафика.
ICMP быстро сообщит системе о выявленной проблеме. Это очень надежный протокол, поскольку указание на ошибки не зависит от наличия сетевого центра управления.
Однако в использовании сообщений ICMP имеются некоторые недостатки. Например, если недостижима точка назначения, то сообщение будет распространяться до источника по всей сети, а не на станцию сетевого управления.
Реально ICMP не имеет средств предоставить отчет об ошибках выделенному операционному центру. Для этого служит протокол SNMP (см. главу 20).
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? Рассмотрим пример, когда производится попытка обращения по зарезервированному (и, следовательно, недостижимому) адресу сети:
Произошло то, что и должно было произойти,— в сообщении указано на недостижимость хоста (Host is unreachable).
Чтобы определить, какой из маршрутизаторов послал сообщение ICMP, можно использовать команду traceroute:
Маршрутизатор 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