ICMP-протокол осуществляет следующие основные задачи:
- передачу отклика на пакет или эхо на отклик;
- контроль времени жизни дейтаграмм в системе;
- реализует переадресацию пакета;
- выдает сообщения о недостижимости адресата или о некорректности параметров;
- формирует и пересылает временные метки;
- выдает запросы и отклики для адресных масок и другой информации.
ICMP-сообщения имеют свой собственный формат, а схема их вложения аналогична UDP или TCP и представлена на рис. I.
Все ICMP пакеты начинаются с 8-битного поля типа ICMP и его кода (15 значений). Тип ICMP определяет основную решаемую задачу сообщения (их на данный момент времени зарезервировано 18 типов), а код уточняет функцию ICMP-сообщения в задаче (для каждого типа определен свой перечень задач – кодов).
Перечень задач и функций (типов и кодов ICMP сообщений) приведен таблице 2.
Ниже (на рис. II) представлен формат эхо-запроса (Ping) и отклика для протокола ICMP.
Поля идентификатор (обычно это идентификатор процесса) и номер по порядку (увеличивается на 1 при посылке каждого пакета) служат для того, чтобы отправитель мог связать в пары запросы и отклики. Поле тип определяет, является ли этот пакет запросом (8) или откликом (0). Поле контрольная сумма представляет собой 16-разрядное дополнение по модулю 1 контрольной суммы всего ICMP-сообщения, начиная с поля тип. Поле данные служит для записи информации, возвращаемой отправителю.
Таблица 2.