ICMP протокол
Въпреки че IPv4 не е надежден протокол, той предоставя възможност за изпращане на съобщения в случай на определени грешки. Тези съобщения се изпращат чрез услугите на Internet Control Message Protocol (ICMP ). Целта на тези съобщения е да осигурят обратна връзка за проблеми с обработката на IP пакети при определени условия, а не да направят IP надежден. ICMP съобщенията не са задължителни и често не са разрешени от съображения за сигурност.
ICMP е протоколът за съобщения на TCP/IP стека. ICMP предоставя контролни съобщения и съобщения за грешки и се използва от помощните програми ping и traceroute. Въпреки че ICMP използва базова IP поддръжка като протокол от високо ниво, той всъщност е отделен протокол от слой 3 от TCP/IP стека.
Видовете ICMP съобщения - и причините, поради които се изпращат - са обширни. Ще обсъдим някои от по-често срещаните съобщения.
ICMP съобщенията, които могат да бъдат изпратени, включват:
- Проверка на възел
- Недостъпна дестинация или услуга
- Времевият лимит е превишен
- Пренасочване на маршрута
- Потискане на източника
Проверка на възел
ICMP ехо съобщение може да се използва, за да се определи дали даден възел работи. Локалният хост изпраща ICMP ехо заявка до хоста. Хостът, който получава ехо съобщението, отговаря с ICMP ехо отговор, както е показано на фигурата. Това използване на ICMP ехо съобщения е в основата на помощната програма ping.
Недостъпна дестинация или услуга
ICMP Destination Unreachable може да се използва за уведомяване на хост, че дестинация или услуга е недостъпна. Когато хост или шлюз получи пакет, който не ене успее да достави, той може да изпрати пакет ICMP Destination Unreachable до хоста, изпратил оригиналния пакет. Пакетът Destination Unreachable ще съдържа кодове, които показват защо пакетът не може да бъде доставен.
Кодовете за недостижима дестинация включват:
0 = недостъпна мрежа
1 = недостъпен възел
2 = недостъпен протокол
3 = недостъпен порт
Кодоветеunreachable networkиhost unreachableса отговори от рутера, когато не може да препрати пакета. Ако рутер получи пакет, за който няма маршрут, той МОЖЕ да отговори с ICMP Destination Unreachable с код = 0, което показва недостижима мрежа. Ако рутер получи пакет, за който има прикачен маршрут, но не може да достави пакета до хост в свързаната мрежа, рутерът може да отговори с ICMP Destination Unreachable с код = 1, което показва, че мрежата е известна, но хостът е недостъпен.
Кодове 2 и 3 (недостъпен протоколинедостъпен порт) се използват от крайния хост, за да покажат, че TCP сегментът или UDP дейтаграмата, съдържащи се в пакета, не могат да бъдат доставени до услугата на горния слой.
Когато краен хост получи PDU пакет от ниво 4, който да бъде доставен до недостъпна услуга, хостът МОЖЕ да отговори на изпращащия ICMP хост със съобщение за недостижима дестинация с код = 2 или с код = 3, което показва, че услугата не е налична. Услугата вероятно е недостъпна, защото подходящият демон, който предоставя услугата, не работи или защото защитата на хоста не позволява достъп до услугата.
Времето е превишено
Съобщението ICMP Timeout се използва от рутер, за да покаже, че даден пакет не е такъвможе да бъде предаден, защото TTL на пакета е изтекъл. Ако рутер получи пакет и намали TTL полето в пакета до нула, той отхвърля пакета. Рутерът МОЖЕ също така да изпрати ICMP съобщение за изчакване до изходния възел, за да му каже причината, поради която пакетът е бил изпуснат.
Пренасочване на маршрута
Рутерът може да използва ICMP съобщение за пренасочване, за да уведоми хостовете в мрежата, че е наличен по-добър маршрут за определена дестинация. Това съобщение може да се използва само когато хостът източник е в същата физическа мрежа като двата шлюза. Ако рутер получи пакет, за който има маршрут и за който следващият хоп е прикрепен към същия интерфейс, от който е пристигнал пакетът, рутерът може да изпрати ICMP съобщение за пренасочване към изходния възел. Това съобщение ще уведоми изходния възел за следващия скок, съдържащ се в маршрута на таблицата за маршрутизиране.
Потискане на източника
ICMP Source Suppression Message може да се използва, за да се каже на източника временно да спре изпращането на пакети. Ако рутерът няма достатъчно буферно пространство, за да получи входящи пакети, той ще отхвърли пакетите. Ако рутерът трябва да направи това, той МОЖЕ също така да изпрати ICMP съобщение за потискане на източника до изпращащите хостове за всяко съобщение, което отхвърля.
Хостът местоназначение МОЖЕ също да изпрати съобщение за потискане на източника, ако дейтаграмите пристигнат твърде бързо, за да бъдат обработени.
Когато даден хост получи ICMP съобщение за потискане на източника, той го докладва на транспортния слой. Освен това изпращащият хост може да използва механизмите за контрол на TCP потока,за коригиране на предаването.