Список ключевых слов: протокол межсетевых управляющих сообщений, поля типа, кода, контрольной суммы, идентификатора и порядкового номера, эхо-запрос, эхо-ответ.
Протокол межсетевых управляющих сообщений (Internet Control Message Protocol, ICMP) играет в сети вспомогательную роль. Спецификация этого протокола содержится в RFC 792.
Существует ряд ситуаций, когда протокол IP не может доставить пакет адресату, например, когда истекает время жизни пакета, когда в таблице маршрутизации отсутствует маршрут к заданному в пакете адресу назначения, когда пакет не проходит проверку по контрольной сумме, когда шлюз не имеет достаточно места в своем буфере для передачи какого-либо пакета и т. д. и т. п. Как мы не раз отмечали, протокол IP работает по возможности (с максимальными усилиями), то есть не предпринимает мер для гарантированной доставки данных. Это свойство «необязательности» протокола IP компенсируется протоколами более высоких уровней, например TCP на транспортном уровне или в какой-то степени DNS на прикладном уровне. Они берут на себя обязанности по обеспечению надежности, применяя такие известные приемы, как нумерация сообщений, подтверждение доставки, повторная посылка данных.
|
|
Протокол ICMP служит дополнением протокола IP несколько другого рода. Он не предназначен для исправления возникших при передаче пакета проблем: если пакет потерян, ICMP не может послать его заново. Задача ICMP другая — он является средством оповещения отправителя о «несчастных случаях», произошедших с его пакетами. В то время как протокол IP посылает пакет и забывает о нем, протокол ICMP «отслеживает» передвижение пакета по сети и при отбрасывании пакета маршрутизатором передает сообщение об этом узлу-источнику, обеспечивая таким образом обратную связь между посланным пакетом и отправителем.
Пусть, например, протокол IP, работающий на каком-либо маршрутизаторе, обнаружил, что пакет для дальнейшей передачи по маршруту необходимо фрагментировать, но в пакете установлен признак DF (не фрагментировать). Протокол IP, обнаруживший, что он не может передать IP-пакет далее по сети, должен отправить диагностическое ICMP-сообщение узлу-источнику и только потом отбросить пакет.
Помимо диагностики ICMP также используется для мониторинга сети. Так, в основе популярных утилит для мониторинга IP-сетей ping и tracert лежат ICMP- сообщения. С помощью ICMP-сообщений приложение может определить маршрут перемещения данных, оценить работоспособность сети, определить время прохождения данных до заданного узла, сделать запрос о значении маски определенного сетевого интерфейса и т. п.
|
|
Заметим, что некоторые из пакетов могут исчезнуть в сети, не вызвав при этом никаких оповещений. В частности, протокол ICMP не предусматривает передачу сообщений о проблемах, возникающих при обработке IP-пакетов, несущик ICMP-сообщения об ошибках. (Это правило, однако, не действует для 1СМР-за- просов.) Такое решение было принято разработчиками протокола, чтобы не порождать «штормы» в сетях, когда количество сообщений об ошибках лавинообразно возрастает. По этой же причине ICMP-сообщения не передаются, если ошибка возникла при передаче какого-либо фрагмента, кроме первого, а также когда потерянный пакет имел широковещательный IP-адрес или был упакован в кадр с широковещательным адресом несущей технологии.
Поскольку IP-пакет содержит адрес отправителя, но не содержит никакой адресной информации о промежуточных маршрутизаторах, ICMP-сообщения направляются только конечным узлам. Здесь сообщения могут быть обработаны либо ядром операционной системы, либо протоколами транспортного и прикладного уровней, либо приложениями, либо просто проигнорированы. Важно, что обработка ICMP-сообщений не входит в обязанности протоколов IP и ICMP.