Наши партнеры








Книги по Linux (с отзывами читателей)

Библиотека сайта rus-linux.net

Internet Control Message Protocol

IP имеет вспомогательный протокол, о котором мы еще не говорили. Это Internet Control Message Protocol (ICMP), используемый кодом работы с сетями ядра Linux, чтобы передавать сообщения об ошибках на другие компьютеры. Например, допустим, что вы с системы erdos пытаетесь связаться по telnet с портом 12345 на quark, но на той машине нет никаких процессов на этом порте. Когда первый пакет TCP попадет на этот порт quark, уровень работы с сетями распознает это поступление и немедленно возвратит ICMP-сообщение на erdos с диагностикой "Port Unreachable".

ICMP-протокол обеспечивает несколько различных сообщений, многие из которых имеют дело с условиями ошибки. Однако, имеется очень интересное сообщение, названное Redirect. Оно генерируется модулем маршрутизации, когда он обнаруживает, что другой компьютер использует его как шлюз, несмотря на наличие намного более короткого маршрута. Например, после загрузки таблица маршрутизации sophus не была завершена. Она могла бы содержать маршруты к сети Mathematics network, к каналу FDDI и заданному по умолчанию маршруту, указывающему на Groucho Computing Center (gcc1). Таким образом, пакеты для quark были бы посланы gcc1, а не niels, шлюзу кафедры физики. При получении такого пакета gcc1 обратит внимание, что это неправильная маршрутизация и передаст пакет на niels , одновременно возвращая сообщение ICMP Redirect на sophus.

Это, кажется, очень умный способ избежать настройки маршрутов, кроме базисных, вручную. Однако помните, что доверять сообщениям Redirect протоколов RIP и ICMP можно не всегда! ICMP Redirect и RIP не дают возможности проверить подлинность информации. Эта ситуация позволяет злонамеренному человеку сделать очень многое. Код работы с сетями Linux обрабатывает сообщения Network Redirect, как будто они были сообщениями Host Redirects. Это минимизирует повреждение при нападении, ограничивая их одной машиной, а не целой сетью.