Provided by:
manpages-ru_0.98-4_all 
НАЗВАНИЕ
icmp, IPPROTO_ICMP - модуль ядра Linux, реализующий протокол IPv4 ICMP.
ОПИСАНИЕ
Этот модуль ядра реализует Internet Control Message Protocol (описанный
в RFC792). Он используется для извещения об ошибках и для диагностики.
Пользователь не взаимодействует напрямую с этим модулем; вместо этого
он общается с другими протоколами в ядре, а они при помощи протокола
ICMP передают ошибки на уровень приложения. Кроме того, этот модуль
отвечает на ICMP-запросы.
Пользовательский протокол может получать ICMP-пакеты для всех локальных
сокетов, если откроет "сырой" сокет, используя протокол IPPROTO_ICMP.
Смотри описание raw(7), где приведена более подробная информация. Типы
ICMP-пакетов, передаваемые в сокет, могут быть отфильтрованы, используя
параметр сокета ICMP_FILTER. Пакеты ICMP всегда обрабатываются ядром,
даже когда передаются в пользовательский сокет.
Linux ограничивает для каждого получателя поток ICMP-пакетов с
сообщениями об ошибках. Количество ICMP_REDIRECT и ICMP_DEST_UNREACH
также ограничивается для каждого отправителя приходящих пакетов.
SYSCTLS
ICMP поддерживает интерфейс sysctl для настройки некоторых глобальных
параметров IP. К этим параметрам можно обращаться, читая и записывая
файлы /proc/sys/net/ipv4/*, или же при помощи интерфейса sysctl(2).
Большая часть этих параметров управляет ограничением потока
разнообразных ICMP-пакетов. Linux 2.2 использует token bucket фильтр
для ограничения ICMP пакетов. Значение таких параметров -- задержка в
jiffies, пока token-bucket-фильтр очищается после всплеска. "Jiffy" --
это системо-зависимая единица измерения, обычно 10мс на x86 и около 1ms
на Alpha и IA64.
icmp_destunreach_rate
Максимальная частота посылки ICMP-пакетов Destination
Unreachable по каждому конкретному маршруту или получателю.
Ограничение не влияет на посылку пакетов ICMP_FRAG_NEEDED,
необходимых для определения MTU маршрута (path MTU discovery).
icmp_echo_ignore_all
Если этот параметр больше нуля, Linux будет игнорировать все
запросы ICMP_ECHO.
icmp_echo_ignore_broadcasts
Если этот параметр больше нуля, Linux будет игнорировать все
пакеты ICMP_ECHO, посланные по широковещательным адресам.
icmp_echoreply_rate
Максимальная частота посылки пакетов ICMP_ECHOREPLY в ответ на
запросы ICMP_ECHOREQUEST.
icmp_paramprob_rate
Максимальная частота посылки пакетов ICMP_PARAMETERPROB. Эти
пакеты посылаются, когда приходит пакет с ошибочным заголовком
IP.
icmp_timeexceed_rate
Максимальная частота посылки пакетов ICMP_TIME_EXCEEDED. Эти
пакеты посылаются для предотвращения зацикливания, когда пакет
прошел слишком большое количество хопов.
ПРИМЕЧАНИЯ
Так как многие реализации не поддерживают "сырые" сокеты с параметром
IPPROTO_ICMP, то использование этой особенности нежелательно при
написании переносимых программ.
Пакеты ICMP_REDIRECT не посылаются, когда Linux не является
маршрутизатором. Они принимаются только от старых шлюзов, определенных
в таблице маршрутизации, причем информация о перенаправлении маршрутов
устаревает через некоторое время.
64-битные временные метки ICMP_TIMESTAMP возвращаются в миллисекундах,
прошедших с 1-го января 1970 года.
Реализация ICMP в Linux внутри себя использует для посылки ICMP-пакетов
"сырые" сокеты. Такие сокеты могут показываться программой netstat(8),
причем их inode будет равен нулю.
ВЕРСИИ
Поддержка запроса ICMP_ADDRESS была прекращена в ядре 2.2.
Поддержка ICMP_SOURCE_QUENCH была прекращена в ядре Linux 2.2.
СМОТРИ ТАКЖЕ
ip(7)
RFC792, где описан протокол ICMP.
ПЕРЕВОД
Перевел с английского Алексей Миллер <asm@asm.kiev.ua> 2000