Чтение онлайн

на главную - закладки

Жанры

Linux: Полное руководство

Аллен Питер В.

Шрифт:
13 Time stamp Message Запрос временной метки 0 Код всегда равен 0 14 Timestamp Reply Message Ответ о временной метке 0 Код всегда равен 0 15 Information Request Информационный запрос (запрашивается номер нашей сети) 0 Код всегда равен 0 16 Information Reply Message Информационный ответ (возвращается номер кашей сети) 0 Код всегда равен 0 17 (*) Information Request Информационный запрос (запрашивается маска адреса) 0 Код всегда равен 0 18 (*) Information Reply Message Информационный ответ (возвращается маска адреса) 0 Код всегда равен 0

27.2.4. Функции для работы с протоколом ICMP

Для работы с протоколом ICMP существует 12 основных функций. Все эти функции описаны в файле

/usr/src/linux/net/ipv4/icmp.c
. У вас нет этого файла? Тогда установите исходники ядра (странно, почему вы до сих пор этого не сделали).

♦ 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

struct sk_buff {

 /* Эти два члена должны быть первыми */

 struct sk_buff* next; /* Следующий буфер в списке*/

 struct sk_buff* prev;/* Предыдущий буфер в списке*/

 struct sk_buff_head * list; /* "Голова" списка */

 struct sock *sk; /* Сокет */

 struct timeval stamp; /* Время прибытия пакета */

 struct net_device *dev; /* Сетевое устройство */

 /* Заголовок транспортного уровня */

 union {

struct tcphdr *th;

struct udphdr *uh;

struct icmphdr *icmph;

struct igmphdr* igmph;

struct iphdr *ipiph;

struct spxhdr *spxh;

unsigned char *raw;

 } h;

 /* Заголовок сетевого уровня */

 union {

struct iphdr *iph;

struct ipv6hdr* ipv6h;

struct arphdr *arph;

struct ipxhdr *ipxh;

unsigned char *raw;

 } nh;

 union {

struct ethhdr *ethernet;

unsigned char *raw;

 } mac;

 struct dst_entry *dst;

 char cb[48];

 unsigned int len; /* Длина данных */

 unsigned int data_len;

 unsigned int csum; /* Контрольная сумма */

 unsigned char __unused, /* He используется */

cloned, /* Заголовок должен клонироваться */

pkt_type, /* Класс пакета */

ip_summed; /* контрольная сумма IP */

 __u32 priority; /* Приоритет пакета */

 atomic_t users; /* Счетчик пользователей — см.

datagram.c, tcp.c */

 unsigned short protocol; /* Протокол пакета */

 unsigned short security; /* Уровень безопасности */

 unsigned int truesize; /* Размер буфера */

 unsigned char *head; /* Заголовок буфера */

 unsigned char *data; /* Указатель заголовка данных */

 unsigned char *tail; /* Указатель "хвоста" */

Поделиться:
Популярные книги

Вечный. Книга I

Рокотов Алексей
1. Вечный
Фантастика:
боевая фантастика
попаданцы
рпг
5.00
рейтинг книги
Вечный. Книга I

Второгодка. Книга 2. Око за око

Ромов Дмитрий
2. Второгодка
Фантастика:
героическая фантастика
альтернативная история
фэнтези
5.00
рейтинг книги
Второгодка. Книга 2. Око за око

Император Пограничья 8

Астахов Евгений Евгеньевич
8. Император Пограничья
Фантастика:
городское фэнтези
аниме
фэнтези
фантастика: прочее
попаданцы
5.00
рейтинг книги
Император Пограничья 8

Гримуар темного лорда VI

Грехов Тимофей
6. Гримуар темного лорда
Фантастика:
попаданцы
аниме
фэнтези
5.00
рейтинг книги
Гримуар темного лорда VI

Как я строил магическую империю 4

Зубов Константин
4. Как я строил магическую империю
Фантастика:
боевая фантастика
постапокалипсис
аниме
фантастика: прочее
фэнтези
5.00
рейтинг книги
Как я строил магическую империю 4

Крестоносец

Ланцов Михаил Алексеевич
7. Помещик
Фантастика:
героическая фантастика
попаданцы
альтернативная история
5.00
рейтинг книги
Крестоносец

Иной. Том 3. Родственные связи

Amazerak
3. Иной в голове
Фантастика:
боевая фантастика
рпг
аниме
5.00
рейтинг книги
Иной. Том 3. Родственные связи

Перекресток судеб

Щепетнов Евгений Владимирович
6. Нед
Фантастика:
фэнтези
8.84
рейтинг книги
Перекресток судеб

Цикл "Идеальный мир для Лекаря". Компиляция. Книги 1-30

Сапфир Олег
Лекарь
Фантастика:
боевая фантастика
юмористическое фэнтези
аниме
фэнтези
5.00
рейтинг книги
Цикл Идеальный мир для Лекаря. Компиляция. Книги 1-30

Я – Легенда 2: геном хищника

Гарцевич Евгений Александрович
2. Я - Легенда!
Фантастика:
боевая фантастика
рпг
фантастика: прочее
попаданцы
5.00
рейтинг книги
Я – Легенда 2: геном хищника

Звездная Кровь. Экзарх III

Рокотов Алексей
3. Экзарх
Фантастика:
боевая фантастика
попаданцы
рпг
5.00
рейтинг книги
Звездная Кровь. Экзарх III

Неофит

Листратов Валерий
3. Ушедший Род
Фантастика:
попаданцы
аниме
фэнтези
5.00
рейтинг книги
Неофит

Лекарь

Щепетнов Евгений Владимирович
1. Истринский цикл
Фантастика:
фэнтези
8.24
рейтинг книги
Лекарь

Звездная Кровь. Экзарх II

Рокотов Алексей
2. Экзарх
Старинная литература:
прочая старинная литература
5.00
рейтинг книги
Звездная Кровь. Экзарх II