Аллен Питер В.
Шрифт:
Для работы с протоколом ICMP существует 12 основных функций. Все эти функции описаны в файле
♦ icmp_address — отправка ответа на запрос о маске адреса;
♦ icmp_discard — удаляет ICMP-пакет;
♦ icmp_echo — эхо-запрос;
♦ icmp_init — инициализирует служебные подпрограммы протокола ICMP в операционной системе;
♦ icmp_out_count — увеличивает счетчик отправленных пакетов;
♦ icmp_rcv — прием ICMP-пакета;
♦ icmp_redirect — отправка сообщения переадресации;
♦ icmp_send — отправка ICMP-сообщения;
♦ icmp_timestamp — ответ на запрос о времени создания;
♦ icmp_unreach — отправляет сообщение об ошибке;
♦ xrlim_allow — решает, отправлять ли ICMP-пакет или нет;
♦ xrlim_init — ограничение скорости передачи ICMP-пакетов (в версии ядра 2.0).
27.2.4.1. Технические подробности
Прежде чем перейти к рассмотрению функций ICMP, разберемся, как же ICMP-пакеты принимаются операционной системой. Собственно, ICMP-пакет принимается операционной системой Linux так же, как и любой другой пакет. Драйвер сетевой платы (или другого сетевого устройства) собирает полный пакет данных, затем он строит структуру sk_buff.
Листинг 27.1. Структура sk_buff