А.6. ICMPv4 и ICMPv6: протоколы управляющих сообщений в сети Интернет

А.6. ICMPv4 и ICMPv6: протоколы управляющих сообщений в сети Интернет

Протокол ICMP (Internet Control Message Protocol) является необходимой и неотъемлемой частью любой реализации IPv4 или IPv6. Протокол ICMP обычно используется для обмена сообщениями об ошибках между узлами, как маршрутизирующими, так и обычными, но иногда этот протокол используется и приложениями. Например, приложения ping и traceroute (см. главу 28) используют протокол ICMP.

Первые 32 бита сообщений совпадают для ICMPv4 и ICMPv6 и приведены на рис. А.10. ICMPv4 документируется в RFC 792 [95], а ICMPv6 — в RFC 2463 [21].

Рис. А.10. Формат сообщений ICMPv4 и ICMPv6

Восьмиразрядное поле тип (type) указывает тип сообщения ICMPv4 или ICMPv6, а некоторые типы имеют дополнительную 8-разрядную информацию, указанную в поле кода (code). Поле контрольной суммы (checksum) является стандартной контрольной суммой, используемой в сети Интернет. Отличия между ICMPv4 и ICMPv6 заключаются в том, какие именно поля используются при подсчете контрольной суммы.

С точки зрения сетевого программирования необходимо понимать, какие сообщения ICMP могут быть возвращены приложению, что именно вызывает ошибку и каким образом эта ошибка возвращается приложению. В табл. А.5 приведены все сообщения ICMPv4 и показано, как они обрабатываются операционной системой 4.4BSD. В последнем столбце приведены значения переменной errno — то есть те ошибки, которые возвращаются приложениям. В табл. А.6 приведен список сообщений ICMPv6. При использовании TCP ошибка не возвращается приложению немедленно. Если TCP разрывает соединение по тайм-ауту, все накопленные ошибки возвращаются приложению. При использовании UDP ошибка возвращается при очередной операции чтения или записи, но только на присоединенном сокете (раздел 8.9).

Таблица А.5. Обработка различных типов ICMP-сообщений в 4.4BSD

Тип Код Описание Обработчик или errno
0 0 Echo-reply (Эхо-ответ) Пользовательский процесс (Ping)
3 Destination unreachable (Получатель недоступен)
0 Network unreachable (Сеть недоступна) EHOSTUNREACH
1 Host unreachable (Узел недоступен) EHOSTUNREACH
2 Protocol unreachable (Протокол недоступен) ECONNREFUSED
3 Port unreachable (Порт недоступен) ECONNREFUSED
4 Fragmentation needed but DF bit set (Необходима фрагментация, но установлен бит DF) EMSGSIZE
5 Source route failed (Сбой маршрута отправителя) EHOSTUNREACH
6 Destination network unknown (Неизвестна сеть получателя) EHOSTUNREACH
7 Destination host unknown (Неизвестен узел получателя) EHOSTUNREACH
8 Source host isolated (Узел отправителя изолирован). Устаревший тип сообщений EHOSTUNREACH
9 Destination network administratively prohibited (Сеть получателя запрещена администратором) EHOSTUNREACH
10 Destination host administratively prohibited (Узел получателя запрещен администратором) EHOSTUNREACH
11 Network unreachable for TOS (Сеть недоступна для TOS) EHOSTUNREACH
12 Host unreachable for TOS (Узел недоступен для TOS) EHOSTUNREACH
13 Communication administratively prohibited (Связь запрещена администратором) (Игнорируется)
14 Host precedence violation (Нарушение порядка старшинства узлов) (Игнорируется)
15 Precedence cutoff in effect (Действует старшинство узлов) (Игнорируется)
4 0 Source quench (Отключение отправителя) Обрабатывается ядром в случае TCP, игнорируется в случае UDP
5 Redirect (Перенаправление)
0 Redirect for network (Перенаправление для сети) Ядро обновляет таблицу маршрутизации
1 Redirect for host (Перенаправление для узла) Ядро обновляет таблицу маршрутизации
2 Redirect for type-of-service and network (Перенаправление для типа сервиса и сети) Ядро обновляет таблицу маршрутизации
3 Redirect for type of service and host (Перенаправление для типа сервиса и узла) Ядро обновляет таблицу маршрутизации
8 0 Echo request (Эхо-запрос) Ядро генерирует ответ
9 0 Router advertisement (Извещение маршрутизатора) Пользовательский процесс
10 0 Router solicitation (Запрос маршрутизатору) Пользовательский процесс
11 Time exceeded (Превышено время передачи)
0 TTL equals 0 during transit (Время жизни равно 0 во время передачи) Пользовательский процесс
1 TTL equals 0 during reassembly (Время жизни равно 0 во время сборки) Пользовательский процесс
12 Parameter problem (Проблема с параметром)
0 IP header bad (Неправильный IP-заголовок). Типичная ошибка ENOPROTOOPT
1 Required option missed (Пропущен необходимый параметр) ENOPROTOOPT
13 0 Timestamp request (Запрос отметки времени) Ядро генерирует ответ
14 0 Timestamp reply (Ответ об отметке времени) Пользовательский процесс
15 0 Information request (Информационный запрос). Устаревший тип сообщений (игнорируется)
16 0 Information reply (Информационный ответ). Устаревший тип сообщений Пользовательский процесс
17 0 Address mask request (Запрос маски адреса) Ядро генерирует ответ
18 0 Address mask reply (Ответ маски адреса) Пользовательский процесс

Таблица А.6. Сообщения ICMPv6

Тип Код Описание Обработчик или errno
1 Administratively prohibited, firewall filter (Запрещено администратором, фильтр брандмауэра) EHOSTUNREACH
2 Not a neighbor, incorrect strict source route (He сосед, некорректный маршрут отправителя) EHOSTUNREACH
3 Address unreachable (Адрес недоступен) EHOSTDOWN
4 Port unreachable (Порт недоступен) ECONNREFUSED
2 0 Packet too big (Слишком большой пакет) Ядро выполняет обнаружение транспортной MTU
3 Time exceeded (Превышено время передачи)
0 Hop limit exceeded in transit (При передаче превышено значение предельного количества транзитных узлов) Пользовательский процесс
1 Fragment reassembly time exceeded (Истекло время сборки из фрагментов) Пользовательский процесс
4 Parameter problem (Проблема с параметром)
0 Erroneous header filed (Ошибочное поле заголовка) ENOPROTOOPT
1 Unrecognized next header (Следующий заголовок нераспознаваем) ENOPROTOOPT
2 Unrecognized option (Неизвестный параметр) ENOPROTOOPT
128 0 Echo request (Эхо-запрос (Ping)) Ядро генерирует ответ
129 0 Echo reply (Эхо-ответ (Ping)) Пользовательский процесс (Ping)
130 0 Group membership query (Запрос о членстве в группе) Пользовательский процесс
131 0 Group membership report (Отчет о членстве в группе) Пользовательский процесс
132 0 Group membership reduction (Сокращение членства в группе) Пользовательский процесс
133 0 Router solicitation (Запрос маршрутизатору) Пользовательский процесс
134 0 Router advertisement (Извещение маршрутизатора) Пользовательский процесс
135 0 Neighbor solicitation (Запрос соседу) Пользовательский процесс
136 0 Neighbor advertisement (Извещение соседа) Пользовательский процесс
137 0 Redirect (Перенаправление) Ядро обновляет таблицу маршрутизации

Запись «пользовательский процесс» в этой таблице означает, что ядро не обрабатывает сообщение и ждет обработки данного сообщения от пользовательского процесса с символьным сокетом. Также следует отметить, что различные реализации могут обрабатывать одни и те же сообщения по-разному. Например, в Unix сообщения типа Router solicitation (Запрос маршрутизатору) и Router advertisement (Извещение маршрутизатора) обычно обрабатываются как пользовательские процессы, но некоторые реализации могут обрабатывать эти сообщения в ядре.

Версия ICMPv6 сбрасывает старший бит поля тип для сообщения об ошибке (типы 1-4) и устанавливает этот бит для информационного сообщения (типы 128–137).

Поделитесь на страничке

Следующая глава >

Похожие главы из других книг

2.3. Интернет по локальной сети

Из книги Fedora 8 Руководство пользователя автора Колисниченко Денис Николаевич

2.3. Интернет по локальной сети 2.3.1. Настройка локальной сети Интернет по локальной сети чаще всего встречается на предприятиях или в небольших домашних сетях. Как правило, в сети есть главный компьютер - шлюз, предоставляющий всем остальным компьютерам сети доступ к


Часть IV Работа в сети Интернет

Из книги Работа на ноутбуке автора Садовский Алексей

Часть IV Работа в сети Интернет Глава 24 Подключение к локальной сети • Проводная локальная сеть• Настройка сетевого соединения1 сентября 1969 года считается датой рождения Интернета. Впервые с помощью специального кабеля были объединены два компьютера, которые могли


Глава 25 Настройка подключения к сети Интернет

Из книги Домашние и офисные сети под Vista и XP автора Ватаманюк Александр Иванович

Глава 25 Настройка подключения к сети Интернет • Настройка подключения по проводной локальной сети• Подключение по беспроводной локальной


Протоколы шифрования и аутентификации в сети

Из книги Delphi. Учимся на примерах автора Парижский Сергей Михайлович

Протоколы шифрования и аутентификации в сети Почему безопасность работы в сети играет огромную роль? Ответ на этот вопрос достаточно простой: предприятие, на котором функционирует сеть, может в своей работе использовать разные документы и данные, предназначенные только


Глава 15 Отправка сообщений в локальной сети

Из книги Новейший самоучитель работы на компьютере автора Белунцов Валерий

Глава 15 Отправка сообщений в локальной сети Постановка задачи Разработать программу, которая будет предоставлять интерфейс для использования стандартной для Win2000/XP команды передачи сообщений net send. Дать возможность указать пользователю адрес получателя, текст


Передача файлов по сети Интернет (FTP)

Из книги Компьютерные советы (сборник статей) автора Автор неизвестен

Передача файлов по сети Интернет (FTP) Для того чтобы организовать общедоступные файловые архивы или подобные архивы с ограниченным доступом, используются специальные FTP-серверы. С них любой пользователь может скачать на свой компьютер любые файлы, а в некоторых случаях и


Анонимность в сети интернет

Из книги Самоучитель работы на Macintosh автора Скрылина Софья

Анонимность в сети интернет Автор: Гонодобов Василийhttp://vasinsait.narod.ru/Журналистика всегда была склонна к преувеличениям и дешевым сенсациям. И дело тут не столько в том, что это, как всем известно, вторая древнейшая профессия со всеми вытекающими отсюда аналогиями, а в том,


3.11.4. Устранение неполадок при подключении к сети Интернет

Из книги Как пользоваться Интернетом после принятия закона «Об Интернете» автора Халявин Василий

3.11.4. Устранение неполадок при подключении к сети Интернет Окно Сеть (Network) помимо настроек сетевых интерфейсов используется для определения активного соединения; так, например, на рис. 3.33 работающим соединением является AirPort, которое автоматически располагается на


3.7. Подключение к сети Интернет

Из книги UNIX: разработка сетевых приложений автора Стивенс Уильям Ричард

3.7. Подключение к сети Интернет К первоначальным настройкам системы я отношу и подключение к Интернету. Если лет 10 назад это было диковинкой и дорогим удовольствием, то сейчас Интернет стал неотъемлемой частью любого компьютера. Трудно себе представить жизнь без общения


Фильтрация по типу сообщений ICMPv6

Из книги Установка, настройка и восстановление Windows 7 на 100% автора Ватаманюк Александр Иванович

Фильтрация по типу сообщений ICMPv6 Символьный сокет ICMPv4 получает большинство сообщений ICMPv4, полученных ядром. Но ICMPv6 является расширением ICMPv4, включающим функциональные возможности ARP и IGMP (см. раздел 2.2). Следовательно, символьный сокет ICMPv6 потенциально может принимать


Приложение А Протоколы IPv4, IPv6, ICMPv4 и ICMFV6

Из книги Windows 10. Секреты и устройство автора Алмаметов Владимир

Приложение А Протоколы IPv4, IPv6, ICMPv4 и ICMFV6 А.1. Введение В этом приложении приведен обзор протоколов IPv4, IPv6, ICMPv4 и ICMPv6. Данный материал позволяет глубже понять рассмотренные в главе 2 протоколы TCP и UDP. Некоторые возможности IP и ICMP рассматриваются также более подробно и в других


Интернет и сети

Из книги автора

Интернет и сети В этом разделе находятся несколько параметров, с помощью которых можно настраивать некоторые параметры браузера Internet Explorer, а также влиять на поведение компьютера при работе в локальной сети (рис. 24.19). Рис. 24.19. Содержимое подраздела Локальные сети раздела