ICMP-сообщения инкапсулируются и передаются в IP-датаграммах, как показано на следующем рисунке.
Существует несколько типов сообщений ICMP. Каждый тип сообщения имеет свой формат, при этом все они начинаются с общих трех полей: 8-битного целого числа, обозначающего тип сообщения (TYPE), 8-битного поля кода (CODE), который конкретизирует назначение сообщения, и 16-битного поля контрольной суммы (CHECKSUM). Кроме того, сообщение ICMP всегда содержит заголовок и первые 64 бита данных пакета IP, который вызвал ошибку. Это делается для того, чтобы узел-отправитель смог более точно проанализировать причину ошибки, так как все протоколы прикладного уровня стека TCP/IP содержат наиболее важную информацию для анализа в первых 64 битах своих сообщений.
Поле типа может иметь следующие значения:
Значение
| Тип сообщения
|
| Эхо-ответ (Echo Replay)
|
| Узел назначения недостижим (Destination Unreachable)
|
| Подавление источника (Source Quench)
|
| Перенаправление маршрута (Redirect)
|
| Эхо-запрос (Echo Request)
|
| Истечение времени дейтаграммы (Time Exceeded for a Datagram)
|
| Проблема с параметром пакета (Parameter Problem on a Datagram)
|
| Запрос отметки времени (Timestamp Request)
|
| Ответ отметки времени (Timestamp Replay)
|
| Запрос маски (Address Mask Request)
|
| Ответ маски (Address Mask Replay)
|
Как видно из используемых типов сообщений, протокол ICMP представляет собой некоторое объединение протоколов, решающих свои узкие задачи.