ICMP — это протокол для определения доступности сети и управления потоком и контролем ошибок на сетевом уровне. Но что это означает на практике?
Протокол управляющих сообщений Интернета (ICMP) — это протокол третьего уровня (сетевого уровня) в семиуровневой модели OSI. Протокол диагностирует сетевое подключение или проблемы с передачей данных между устройствами. Это помогает, отправляя, получая и обрабатывая сообщения ICMP, чтобы сообщать о проблемах с подключением к исходному сетевому устройству.
Следовательно, основной целью протокола ICMP является сообщение об ошибках на сетевом уровне. Однако злоумышленники могут манипулировать его функциями для запуска таких атак, как распределенный отказ в обслуживании (DDoS) и Ping of Death. Здесь вы узнаете о протоколе ICMP, вариантах его использования и параметрах, которые важны для понимания сообщений ICMP.
Contents
Как работает ICMP?
Маршрутизаторы используют протокол ICMP для управления сетью и диагностики проблем. Он генерирует и отправляет сообщения об ошибках на устройство-отправитель, когда сеть отключает доставку пакетов на устройство-получатель. Эти сообщения об ошибках включают превышение времени, проблему с параметрами, недоступность пункта назначения, перегрузку сети и т. д.
Например, когда отправитель отправляет данные с одного устройства на устройство назначения в виде IP-датаграммы, они проходят через несколько маршрутизаторов или промежуточных устройств. Иногда при пересылке дейтаграммы IPV4 может возникнуть ошибка. Следовательно, сообщения ICMP делятся на две широкие категории: сообщения об ошибках и сообщения с запросами.
Сообщения об ошибках
Это сообщения, с которыми может столкнуться маршрутизатор или хост-посредник при обработке дейтаграмм:
- Превышено время: пакет ICMP имеет параметр времени жизни, который, когда он достигает 0, маршрутизатор или хост отбрасывает дейтаграмму и отправляет сообщение об ошибке превышения времени. Сообщение также отправляется, когда пункт назначения не получает все фрагменты данных.
- Пункт назначения недостижим: устройство, инициирующее подключение, получает сообщение об ошибке «недоступный пункт назначения», когда маршрутизатор или промежуточный узел не может его доставить. Следовательно, устройства отбрасывают дейтаграмму.
- Source Quench: когда устройствам не удается доставить дейтаграмму из-за перегрузки сети, они отправляют отправителю сообщения ICMP «сообщение о подавлении источника». Сообщение об ошибке добавляет управление потоком на сетевом уровне, информируя исходное устройство о перегрузке на пути и замедляя процесс отправки данных.
- Перенаправление: Маршрутизатор с неоптимальным путем перенаправляет пакет на маршрутизатор с оптимальным путем между источником и пунктом назначения. Таким образом, он обновляет источник об изменении своего маршрута.
- Проблема с параметром: исходное устройство получает это сообщение, когда в заголовке дейтаграммы отсутствует какое-либо значение. Например, разница в рассчитанной контрольной сумме в пункте назначения и в источнике генерирует это сообщение об ошибке ICMP.
Сообщения запроса
Сообщения-запросы появляются парами и предоставляют определенную информацию от промежуточных устройств к исходному устройству.
- Сообщение Echo-Request и Echo-Reply: эти сообщения помогают решить проблемы с диагностикой сети.
- Запрос метки времени и ответ. Эти запросы метки времени и ответные сообщения помогают определить время прохождения сигнала туда и обратно между устройствами.
Понимание параметров ICMP
Данные сообщений ICMP инкапсулируются под заголовком IP, что означает, что заголовок дейтаграммы ICMP идет после информации IPv4/v6. Первая часть заголовка пакета ICMP содержит параметры, которые помогают сетевым устройствам определить сообщение об ошибке или запросе.
Среди первых 32 бит первые 8 бит определяют тип сообщения, следующие 8 бит определяют код сообщения, а оставшиеся биты содержат информацию, относящуюся к целостности данных. Следовательно, три информационных поля: типы ICMP, код ICMP и контрольная сумма.
Типы ICMP
Тип определяет назначение пакета ICMP. Поскольку это кратко объясняет, почему исходное устройство получает это сообщение. Существует от 0 до 255 типов сообщений ICMP, каждый из которых предоставляет разную информацию. Некоторые важные типы ICMP:
0: эхо-запрос
3: Пункт назначения недоступен
4: Исходное гашение
5: перенаправить
8: Эхо-ответ
11: Время истекло
12: Проблема с параметрами
30: Трассировка
ICMP-код
Код ICMP предоставляет дополнительную информацию о сообщениях. Например, ICMP типа 3 с кодом 0-15 указывает, почему пункт назначения недоступен; то есть, если код равен 0, то это потому, что сеть недоступна. Аналогично, для типа 3 с кодом 1 сообщение указывает, что хост недоступен.
Кроме того, код 0 типа 8 и код 0 типа 0 представляют сообщения эхо-запроса и эхо-ответа. Следовательно, каждый тип сообщения с одинаковым кодовым значением предоставляет разную сетевую информацию.
Контрольная сумма
Контрольная сумма — это механизм обнаружения ошибок, определяющий целостность данных. Значение контрольной суммы представляет биты в сообщении передачи. Отправитель вычисляет и включает контрольную сумму данных, а получатель пересчитывает значение и сравнивает его с исходным, чтобы определить любые изменения в исходном сообщении во время передачи.
Вторая часть заголовка указывает на значение байта, которое является причиной проблемы в исходном сообщении. Наконец, конечная часть пакета ICMP является фактической дейтаграммой.
Примеры использования ICMP
Вот несколько рабочих примеров протокола ICMP в различных утилитах сетевого управления и администрирования .
пинг
Ping — это утилита командной строки, которая использует сообщения эхо-запроса и эхо-ответа ICMP для проверки доступности сети и задержки между устройствами. Утилита просто определяет доступность целевого сервера, оценивая общее количество отправленных или полученных пакетов и процент потерянных пакетов. Это также помогает определить общий максимальный размер блока передачи (MTU).
Используйте ping <ip_address> , чтобы определить доступность google.com:
трассировка
Traceroute — еще одна утилита командной строки, которая использует сообщения эхо-запроса и эхо-ответа с переменной TTL для сопоставления пути между исходным и целевым устройствами. Это также полезно при определении задержек отклика и обеспечивает точность, запрашивая каждый переход несколько раз.
Как работает ICMP без порта?
Из приведенного выше объяснения следует, что ICMP — это протокол без установления соединения, который отправляет данные независимо в виде дейтаграммы, а его заголовок отображается после сведений IPv4. Однако вы также можете заметить отсутствие номера порта, что поднимает вопрос о том, как устройства получают данные ICMP или узнают о каком-либо соединении?
Ответ довольно прост. Протокол ICMP был разработан для работы на сетевом уровне модели OSI и связи между маршрутизаторами и хостами для обмена информацией. Номера портов являются частью транспортного уровня, а ICMP не является ни протоколом TCP, ни протоколом UDP. Наконец, комбинация типа и кода ICMP помогает устройствам определить сообщение и получить всю информацию о сети.
Управление ошибками и потоком с помощью ICMP
Приведенные выше сведения о протоколе ICMP показывают, как он обеспечивает управление потоком и контроль ошибок данных на третьем уровне модели OSI. Протокольные сообщения и параметры в первой части заголовка ICMP-пакета охватывают все аспекты управления сетью и вопросы диагностики.