Так как ICMP охватывает очень широкий диапазон различных условий, начиная от фатальных ошибок и заканчивая информационными сообщениями, каждое ICMP сообщение обрабатывается по-своему даже в рамках одной реализации. Рисунок 6.12 это повтор рисунка 6.3, который показывает обработку возможных ICMP сообщений системой 4.4BSD.
Если в последней колонке указано "ядро", ICMP сообщение обрабатывается ядром, если - "пользовательский процесс", это означает, что сообщение передается всем пользовательским процессам, которые зарегистрированы в ядре так, что могут читать принятые ICMP сообщения. Если подобных пользовательских процессов нет, сообщение молча удаляется. (Эти пользовательские процессы также получают копии всех других ICMP сообщений, даже если те обрабатываются ядром, однако только после того, как ядро обработало сообщение.) Некоторые сообщения полностью игнорируются. И в заключение, если в последней колонке находится строка в кавычках, то эта строка является сообщением об ошибке Unix, соответствующее создавшемуся условию. Некоторые из ошибок мы рассмотрим в следующих главах.
тип | код | Описание | Кем обрабатывается |
0 | 0 | эхо отклик | пользовательский процесс |
3 | назначение недоступно - destination unreachable: | ||
0 | сеть недоступна - network unreachable | "No route to host" | |
1 | хост недоступен - host unreachable | "No route to host" | |
2 | протокол недоступен - protocol unreachable | "Connection refused" | |
3 | порт недоступен - port unreachable | "Connection refused" | |
4 | необходима фрагментация, но установлен бит DF - fragmentation needed but DF bit set | "Message too long" | |
5 | сбой маршрутизация от источника - source route failed | "No route to host" | |
6 | сеть назначения неизвестна - destination network unknown | "No route to host" | |
7 | хост назначения неизвестен - destination host unknown | "No route to host" | |
8 | хост назначения изолирован - source host isolated (obsolete) | "No route to host" | |
9 | сеть назначения административно закрыта - destination network administratively prohibited | "No route to host" | |
10 | хост назначения административно закрыт - destination host administratively prohibited | "No route to host" | |
11 | сеть недоступна для TOS - network unreachable for TOS | "No route to host" | |
12 | хост недоступен для TOS - host unreachable for TOS | "No route to host" | |
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 | время жизни стало равным 0 в процессе передачи - time-to-live equals 0 during transit | пользовательский процесс | |
1 | время жизни стало равным 0 в процессе повторной сборки - time-to-live equals 0 during reassembly | пользовательский процесс | |
12 | проблемы с параметрами - parameter problem: | ||
0 | неверный IP заголовок - IP header bad | "Protocol not available" | |
1 | отсутствует необходимая опция - required option missing | "Protocol not available" | |
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 | пользовательский процесс |