ICMP

Internet Control Message Protocol (ICMP) - сеть протоколов, которая отвечает за сообщение об ошибках посредством генерации и отправки сообщений на IP-адрес источника при возникновении сетевых проблем, с которыми сталкивается система.[1] Сообщения, генерируемые ICMP, указывают на то, что определенный шлюз, маршрутизатор, служба или даже хост, которые должны подключаться к Интернету, недоступны. В принципе, получатель не может принимать пакеты во время передачи. Любое сетевое IP-устройство может отправлять, генерировать, принимать и обрабатывать сообщения об ошибках ICMP.

Другими словами, вы можете представить ICMP как команду, которая производит механические детали для автомобилей. Лучшим способом сборки транспортного средства было бы сначала изготовить каждую отдельную деталь, прежде чем отправлять каждую из этих деталей на сборочную линию, которая затем собирала бы их в более сложный продукт. Однако, как мы все знаем, будут моменты, когда производственная бригада не сможет отправить некоторые детали в запланированные сроки. Если когда-либо будут отсутствовать детали, то сборочная линия должна будет уведомить об этом производственную группу, следовательно, ICMP работает аналогичным образом. По сути, ICMP играет роль посланника, который передает данные и информацию от получателя к отправителю.

Функциональность

На самом деле, этот протокол довольно сложный. Он имеет множество других функций, помимо сообщения об ошибках в пакетных передачах и хостах, которые не могут быть достигнуты. Он также ретранслирует эхосигналы, а также эхо-ответы на сообщения. Это используется с помощью хорошо известной команды PING, которая позволяет большинству пользователей передавать эхо на принимающий хост. При получении эхосигнала он посылает эхо-ответ.

Таким образом, ICMP-сообщения предоставляют возможность сети и системе уведомлять IP-адрес источника, который является передающим, если удаленный узел, который является принимающей стороной, не получает пакетов, которые были переданы.[2]

Маршрутизатор используется для передачи популярного сообщения "Destination Unreachable" обратно на исходный узел.[3] Это затем отправит его на устройство или программу, которые первыми передали пакеты данных. Эти сообщения об ошибках затем сообщали программе о наличии проблемы с подключением к сети. Как только исходная программа получит информацию о том, что некоторые из этих пакетов данных не дошли до получателя, она затем повторно передаст эту информацию получателю.

Как основная функция, ICMP не обязательно регулярно используется отдельными пользователями в приложениях конечных пользователей, но используется многими сетевыми администраторами для устранения любых ошибок, присутствующих в интернет соединениях, с помощью таких утилит, как диагностика:[4]

  1. Пинг
  2. Трассировка

Основной протокол, используемый ICMP, используется промежуточными устройствами, маршрутизаторами и даже хостами для связи в случае возникновения ошибки и обновления необходимых маршрутизаторов, промежуточных устройств и хостов. При этом наиболее широко используемые IPv4 (Internet Protocol version 4) и гораздо новые IPv6 используют аналогичные версии протокола ICMP, которые называются ICMPv4 и ICMP6 соответственно.[5]

С точки зрения того, как ICMP соотносится с различными заголовками пакетов, заголовок ICMP появляется после заголовка пакета IPv4 или IPv6 при распознавании по номеру протокола. Этот сложный протокол содержит три различных основных компонента:[6]

  • Основной компонент, распознающий сообщения ICMP.
  • Минорный код, который содержит данные и информацию об этом определенном типе поля.
  • Контрольная сумма, которая фактически помогает обнаружить конкретную проблему, возникшую во время передачи сообщения.

ICMP Сообщения

Наиболее популярным и известным сообщением из датаграммы ICMP является сообщение "Destination Unreachable".[1:1] Существует несколько причин, по которым генерируется это сообщение, включая такие проблемы, как невозможность подключения к сети, хосту, порту или даже неисправный протокол.

Большинство пользователей должны знать и учитывать, что хотя сообщение "Destination Unreachable" является наиболее распространенным полученным сообщением, ICMP не единственное сообщение, которое может транслироваться. Существуют и другие сообщения об ошибках, которые включают в себя:[2:1]

  • Redirect Message (Перенаправление сообщений) - это то, что шлюз использует для того, чтобы дать знать хосту-источнику, что он будет отправлять трафик на другой маршрутизатор.
  • Превышенное время - маршрутизатор сообщает узлу-источнику, что определенный пакет превысил определенный таймфрейм под названием Time to Live (TTL). Когда определенный хост начинает получать пакеты информации "Время истекло", это свидетельствует о наличии проблемы в системе, где существует цикл обратной связи в потоке информации.
  • Успокоение источника - это сообщения, которые отправляются с маршрутизатора на узел. Это позволяет ему знать, что буферная емкость заполнена и ненадолго остановит процесс передачи данных, чтобы он смог наверстать упущенное.

Другие сообщения: "Проблема с параметрами", "Запрос и ответ на адресную маску", "Метка времени".

Ограничения

Несмотря на все эти роли, которые должна выполнять ICMP, у нее есть некоторые функциональные ограничения. ICMP не помогает хосту-источнику или IP-адресу стать более надежным и фактически не принимает и не отправляет никаких данных, которые могут быть использованы для передачи.[5:1] ICMP просто существует как способ выявления проблем с потерянными пакетами и любой нарушенной маршрутизацией.

ICMP также не будет посылать сообщения о сообщениях ICMP.[2:2] Если это когда-либо произойдет, это вызовет цикл обратной связи, который окажется вредным для системы, так как создаст ICMP сообщение обратно на другую сторону. Затем это быстро тиражировалось бы до такой степени, что сеть была бы затоплена, что делало бы ее неэффективной.


  1. https://searchnetworking.techtarget.com/definition/ICMP ↩︎ ↩︎

  2. https://www.pcwdld.com/what-is-icmp-and-port ↩︎ ↩︎ ↩︎

  3. https://www.comparitech.com/net-admin/what-is-icmp/ ↩︎

  4. https://www.techopedia.com/definition/5362/internet-control-message-protocol-icmp ↩︎

  5. http://www.enterprisenetworkingplanet.com/netsp/article.php/3584166/Networking-101-Understanding-and-Using-ICMP.htm ↩︎ ↩︎

  6. https://www.webopedia.com/TERM/I/ICMP.html ↩︎