Сидни Фейт - TCP/IP Архитектура, протоколы, реализация (включая IP версии 6 и IP Security)
■ Маршрутизатор должен посылать другим маршрутизаторам список адресов активных групп для каждой из подключенных к нему подсетей.
■ Поскольку хосты достаточно молчаливы, маршрутизатору приходится периодически проверять локальные системы на принадлежность к конкретной группе. Для этого он время от времени отправляет запрос по адресу "все хосты". Каждый хост группы будет ожидать в течение произвольного промежутка времени. Первый из откликнувшихся укажет в своем ответе адрес группы. Маршрутизатор и все системы этой группы услышат такой ответ. Поскольку маршрутизатор после этого уже знает, что в группе есть хотя бы один активный член, остальные ответы уже не требуются.
■ Когда маршрутизатор получает датаграмму многоадресной рассылки, он пересылает ее в каждую подключенную к нему подсеть, в которой находится член этой группы. Маршрутизатор может также переслать датаграмму другому многоадресному маршрутизатору.
IGMP-сообщение хоста имеет формат, показанный на рис. 6.18. Значение типа 1 определяет Host Membership Query (запрос о членстве хоста), а значение 2 — Host Membership Report (отчет о членстве хоста).
Рис. 6.18. Формат сообщения IGMP от хоста
6.22 Рекомендуемая литература
Протокол IP определен в RFC 791. Изменения, корректировки и требования совместимости специфицированы в RFC 1122. RFC 1812 подробно описывает требования IP версии 4 к маршрутизаторам и содержит подробные сведения об операциях таких маршрутизаторов.
Варианты безопасности Министерства обороны обсуждаются в RFC 1108. Вычислению контрольной суммы в Интернете посвящены RFC 1071, 1141 и 1624. RFC 815 представляет эффективные алгоритмы для сборки после фрагментации датаграммы в хосте получателя.
RFC 1112 специфицирует расширения хостов для многоадресных рассылок в IP.
Глава 7
Протокол ICMP
7.1 Введение
Протокол IP имеет ясную и элегантную структуру. В нормальных ситуациях IP очень эффективно использует для пересылки память и ресурсы. Однако что произойдет в нестандартной ситуации? Что может прервать бесцельное блуждание датаграммы до завершения ее времени жизни после краха маршрутизатора и неисправности в сети? Кто предупредит приложение о прекращении отправки датаграмм в недостижимую точку назначения?
Средства для лечения таких неисправностей предоставляет протокол управляющих сообщений Интернета (Internet Control Message Protocol — ICMP). Он выполняет роль сетевого помощника, способствуя маршрутизации в хостах и обеспечивая сетевого администратора средствами определения состояния сетевых узлов. Функции ICMP являются важной частью IP. Все хосты и маршрутизаторы должны быть способны генерировать и обрабатывать сообщения ICMP. При правильном использовании эти сообщения могут улучшить выполнение сетевых операций.
Сообщения ICMP пересылаются в датаграммах IP с обычным заголовком IP (см. рис. 7.1), имея в поле протокола значение 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? Рассмотрим пример, когда производится попытка обращения по зарезервированному (и, следовательно, недостижимому) адресу сети:
> 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). Формат оставшейся части сообщения определяется типом сообщения.