Протокол ICMP
Хотя IPv4 не является надежным протоколом, на самом деле он предусматривает сообщения, которые будут отправлены в случае определенных ошибок. Эти сообщения отправляются, используя службы Протокола Контрольных Сообщений Интернета (протокол ICMP). Цель этих сообщений состоит в том, чтобы обеспечить обратную связь о проблемах, связанных с обработкой пакетов IP при определенных условиях, но не для того, чтобы сделать IP надежным. Сообщения ICMP не являются обязательными и часто не разрешены из соображений безопасности.

ICMP является протоколом обмена сообщениями стека TCP/IP. ICMP обеспечивает контрольные сообщения и сообщения об ошибках и используется утилитами ping и traceroute. Хотя ICMP использует базовую поддержку IP, как высокоуровневый протокол, он фактически является отдельным протоколом Уровня 3 из стека TCP/IP.
Типы сообщений ICMP - и причины, почему они отправляются, - обширны. Мы обсудим некоторые из более распространенных сообщений.
Сообщения ICMP, которые могут быть отправлены, включают:
- Подтверждение узла
- Недостижимое Место назначения или Служба
- Превышение Лимита Времени
- Перенаправление маршрута
- Подавление Источника
Подтверждение узла
Эхо-Сообщение ICMP может использоваться, чтобы определить, является ли узел рабочим. Локальный узел отправляет Эхо-запрос ICMP хосту. Хост, получающий эхо-сообщение, отвечает Эхо-ответом ICMP, как показано на рисунке. Это использование Эхо-сообщений ICMP является основой утилиты ping.
Недостижимое Место назначения или Служба
Недостижимое Место назначения ICMP может использоваться, чтобы уведомить узел, что место назначения или служба недостижимы. Когда узел или шлюз получают пакет, который не удается доставить, он может отправить ICMP пакет Недостижимости Места назначения хосту, отправившему исходный пакет. Пакет Недостижимости Места назначения будет содержать коды, которые указывают, почему пакет не мог быть доставлен.
Среди Кодов Недостижимости Места назначения можно назвать:
0 = недостижимая сеть
1 = недостижимый узел
2 = недостижимый протокол
3 = недостижимый порт
Коды недостижимая сеть и недостижимый узел являются ответами от маршрутизатора, когда тот не может передать пакет. Если маршрутизатор получает пакет, для которого у него нет маршрута, он может ответить Недостижимым Местом назначения ICMP с кодом = 0, указывая на недостижимую сеть. Если маршрутизатор получает пакет, для которого он имеет присоединенный маршрут, но неспособен доставить пакет узлу в подключенной сети, маршрутизатор может ответить Недостижимым Местом назначения ICMP с кодом = 1, указывая, что сеть известна, но узел недостижим.
Коды 2 и 3 (недостижимый протокол и недостижимый порт) используются конечным хостом, чтобы указать, что сегмент TCP или дейтаграмма UDP, содержавшаяся в пакете, не могли быть доставлены службе верхнего уровня.
Когда конечный хост получает пакет PDU Уровня 4, который должен быть доставлен недоступной службе, хост может ответить узлу-отправителю ICMP сообщением Недостижимости Места назначения с кодом = 2 или с кодом = 3, указывая, что служба не доступна. Служба, вероятно, является недоступной, поскольку не запущен соответствующий демон, который предоставляет данную службу, либо потому что безопасность узла не позволяет доступ к службе.
Превышенное время
ICMP Сообщение Превышенного Времени используется маршрутизатором, чтобы указать, что пакет не может быть передан, поскольку TTL пакета истекло. Если маршрутизатор получает пакет и уменьшает поле TTL в пакете до нуля, он отбрасывает пакет. Маршрутизатор может также отправить ICMP Сообщение Превышенного Времени исходному узлу, чтобы сообщить ему причину, по которой пакет был отброшен.
Перенаправление маршрута
Маршрутизатор может использовать ICMP сообщение Перенаправления, чтобы уведомить узлы сети, что для определенного места назначения доступен лучший маршрут. Это сообщение может использоваться только тогда, когда исходный узел находится в той же самой физической сети, что и оба шлюза. Если маршрутизатор получает пакет, для которого у него есть маршрут и для которого следующий транзитный участок присоединен к тому же самому интерфейсу, с которого пакет прибыл, маршрутизатор может отправить сообщение Перенаправления ICMP исходному узлу. Это сообщение уведомит исходный узел о следующем транзитном участке, который содержался в маршруте таблицы маршрутизации.
Подавление Источника
ICMP Сообщение Подавления Источника может использоваться, чтобы сообщить источнику временно прекратить отправлять пакеты. Если у маршрутизатора не будет достаточного количества буферного пространства, чтобы получать входящие пакеты, то маршрутизатор отбросит пакеты. Если маршрутизатору приходится это делать, он может также передать ICMP сообщение Подавления Источника узлам-отправителям для каждого сообщения, которое он отбрасывает.
Конечный хост также может передать сообщение подавления источника, если дейтаграммы прибывают слишком быстро, чтобы быть обработанными.
Когда хост получает ICMP сообщение Подавления Источника, он сообщает об этом Транспортному уровню. Далее хост-отправитель может использовать механизмы управления потоком TCP, чтобы скорректировать передачу.
Ссылки:
RFC 792
RFC 1122
RFC 2003