Internet Control Message Protocol

ICMP (англ. Internet Control Messageing Protocol) e еден од главните протоколи од мрежниот слој од OSI референтниот модел кој обезбедува механизам за рекламирање.Во суштина, овој протокол се користи од мрежните уреди,како насочувачите за да се испратат пораки кои индицираат на пример, дека бараната услуга не е достапна или дека не може да се стигне до домаќин или насочувач . It is assigned protocol number 1.ICMP протоколот исто така може да се користи и за препраќање на пораки за пребарување.ICMP се разликува од транспортните протоколи како што се TCP и UDP во тоа што не се користи вообичаено за размена на податоци меѓу системи ниту пак е користен од страна на кориснички мрежни апликации(со исклучок на некои дијагностички алатки како ping или treceroute )
ICMP за Internet Protocol верзија 4 е познат како ICMPv4. IPv6 слично има протокол ICMPv6.

 Технички детали 

ICMP протоколот е дел од  TCP/IP,како што е дефинирано во RFC 792.ICMP пораките  обично се користат за дијагностички цели или се генерирани од  како одговор на грешки во извршување на IP операции.ICMP пораките се насочуваат кон изворната IP-адреса на оригиналниот пакет.
На пример, секој уред (како еден просечен насочувач ) препраќајќи еден IP датаграм прво го декреметнира time to leave полето ( ТТL ) во IP заглавјето за еден.Ако резултантната вредност во полето TTL  е 0 пакетот се отфрла и  ICMP Time To Live exceeded in transit порака се испраќа до изворната адреса.
Иако ICMP пораките се содржани во стандардните IP пакети ,ICMP пораките обично се обработувани како посебен случај ,различно од нормалната IP обработка. Во многу случаи потребно е да се изврши увид во содржината на ICMP пораката и да се достави соодветната порака( error-message ) до апликацијата која го генерирала оригиналниот IP пакет,односно таа апликација која го пратила пакетот што поттикнал испраќање на ICMP порака.
Многу често користени мрежни услуги се засновани на ICMP пораки.Тraceroute командата е имплементирана преку пренесување на IP датаграм со специјално поставени IP TTL полиња од заглавјето, и чекање  ICMP Time to live exceeded in transit  и "Destination unreachable" пораки генерирани како одговор.Слично и ping услугата е имплементирана преку  ICMP "Echo request" и "Echo reply" пораки.

 ICMP структура на сегмент 
 Заглавје 
ICMP заглавјето започнува по IPv4 заглавјето и се идентификува како протокол број ‘1’.Сите ICMP пакети 8-бајтно заглавје.Првите 4 бајти од заглавјето се доследни.Првиот бајт е за типот на ICMP.Вториот бајт е за ICMP кодот.Третиот и чевртиот бајт се проверка(checksum) на целата ICMP порака.Содржината во останатите 4 бајти од заглавјето е различна и зависи од ICMP типот и кодот.
ICMP пораките за грешка (error message)  содржат податочна секција што вклучува цело IP заглавје плус првите 8 бајти податоци од IP пакетот што генерирал ICMP порака.Така ICMP пакетот се енкапсулира во нов IP пакет.

 Bits  0–7  8–15  16–23  24–31 0  Type  Code  Checksum 32  Rest of Header

 	Type поле – ICMP тип.
 	Code поле – Поттип од дадениот тип.
 	Checksum поле– Податоци за проверка на грешка
 	Останат дел од заглавјето – 4-бајтно поле кое зависи од типот и поттипот на ICMP.

 Контролни пораки 

+Позначајни контролни поракиComputer Networking – A Top-Down Approach by Kurose and Ross         Type  Code  Description0 – Echo Reply                 0     Echo reply (used to ping)1 and 2                       Reserved3 – Destination Unreachable                  0    Destination network unreachable                  1    Destination host unreachable                  2    Destination protocol unreachable                  3    Destination port unreachable                  4    Fragmentation required, and DF flag set                  5    Source route failed                  6    Destination network unknown                  7    Destination host unknown                  8    Source host isolated                  9    Network administratively prohibited                 10    Host administratively prohibited                 11    Network unreachable for TOS                 12    Host unreachable for TOS                 13    Communication administratively prohibited                 14    Host Precedence Violation                 15    Precedence cutoff in effect 4 – Source Quench                  0    Source quench (congestion control) 5 – Redirect Message                  0    Redirect Datagram for the Network                  1    Redirect Datagram for the Host                  2    Redirect Datagram for the TOS & network                  3    Redirect Datagram for the TOS & host 6                   Alternate Host Address 7                   Reserved 8 – Echo Request                  0    Echo request (used to ping) 9 – Router Advertisement                  0    Router Advertisement 10 – Router Solicitation                  0    Router discovery/selection/solicitation 11 – Time Exceeded                  0    TTL expired in transit                  1    Fragment reassembly time exceeded 12 – Parameter Problem: Bad IP header                  0    Pointer indicates the error                  1    Missing a required option                  2    Bad length 13 – Timestamp                  0    Timestamp 14 – Timestamp Reply                  0    Timestamp reply 15 – Information Request                  0    Information Request 16 – Information Reply                  0    Information Reply 17 – Address Mask Request                  0    Address Mask Request 18 – Address Mask Reply                  0    Address Mask Reply 19                  Reserved for security 20 through 29       Reserved for robustness experiment 30 – Traceroute                  0    Information Request 31                  Datagram Conversion Error 32                  Mobile Host Redirect 33                  Where-Are-You (originally meant for IPv6) 34                  Here-I-Am (originally meant for IPv6) 35                  Mobile Registration Request 36                  Mobile Registration Reply 37                  Domain Name Request 38                  Domain Name Reply 39                  SKIP Algorithm Discovery Protocol, Simple Key-Management for Internet Protocol 40                  Photuris, Security failures 41                  ICMP for experimental mobility protocols such as Seamoby [RFC4065] 42 through 255      Reserved

 Source quench 

Со source quench се испраќа барање до испраќачот да ја намали ратата на пораки пратени до некој насочувач или домаќин.Ваков тип на порака може да биде генерирана од некој насочувач или домаќин(хост) доколку нема доволно простор во баферот за да се обработуваат сите пораки, или доколку баферот а насочувачот или хостот се доближува до својот лимит.
Податоците од еден домаќин до некој насочувач на мрежата се праќаат со големи брзини.Иако насочувачот има можност за баферирање на податоците, баферирањето е лимитирано до одреден степен.Насочувачот не може да прими повеќе податоци отколку што има место во баферот и затоа ги отфрла сите пакети што доаѓаат во моментот кога баферот е исполнет,сè додека не се ослободи место во баферот да се примат истите.Но бидејќи не постои механизам за потврдување на примените пакети (acknowledgement) испраќачот нема да знае дали податоците се примени успешно.Затоа со source quench механизмот се овозможува насочувачот да увиди поголема рата на примени пакети од изворот од онаа која што е граница на баферот , и се испраќа ICMP порака до испраќачот да ја намали ратата на испраќање. Source quench ICMP пораката ја има улогата на контрола на проток на мрежно ниво.

+Source quench порака 00  01  02  03  04  05  06  07 08  09  10  11  12  13  14  15 16  17  18  19  20  21  22  23 24  25  26  27  28  29  30  31 Type = 4 Code = 0 Header checksum unused IP header and first 8 bytes of original datagram's data

Каде:
Type полето мора да биде поставено на 4.
Code полето мора да биде поставено на 0.

 Redirect 
Со redirect request пораката се побарува податочните пакети да бидат испраќани по алтернативна патека.ICMP redirect е механизам за насочувачите да пренесуваат насочувачки информации до хостовите.ICMP redirect пораката ги информира хостовите(домаќините) да ги ажурираат своите насочувачки информации(да испраќаат на алтернативни патеки).

+Redirect порака 00  01  02  03  04  05  06  07 08  09  10  11  12  13  14  15 16  17  18  19  20  21  22  23 24  25  26  27  28  29  30  31 Type = 5 Code Header checksum IP address IP header and first 8 bytes of original datagram's data

Каде:
Type полето мора да биде поставено на 4.
Code полето специфицира причина за промена на насочувачките информации.

 Time exceed 
Time exceed е порака генерирана да го извести изворот за отфрлениот пакет од причини што ТТL полето достигнало вредност нула.

+Time exceeded порака 00  01  02  03  04  05  06  07 08  09  10  11  12  13  14  15 16  17  18  19  20  21  22  23 24  25  26  27  28  29  30  31 Type = 11 Code Header checksum unused IP header and first 8 bytes of original datagram's data

Каде:
Type полето мора да биде поставено на 11.
Code полето специфицира причина за отфрлањето на пакетот.

 Timestamp 
Тimestamp пораката се користи за синхронизација.

+Timestamp порака 00  01  02  03  04  05  06  07 08  09  10  11  12  13  14  15 16  17  18  19  20  21  22  23 24  25  26  27  28  29  30  31 Type = 13 Code = 0 Header checksum Identifier Sequence number Originate timestamp

Kaде:
Type полето мора да биде поставено на 13.
Code полето мора да биде поставено на 0.

 Destination unreachable 
Destination unreachable порака се користи за да го информира клиентот дека одредиштето е недостапна од некоја причина.Како причини за генерирање на оваа порака се јавуваат:  не постои физичка врска до дестинациската адреса ( растојанието е бесконечно(анг. infinity.) ), протоколот или портата не се активни од некоја причина,податоците мораат да се фрагметираат а вклучено е полето “don’t fragment”.

+Destination unreachable порака 00  01  02  03  04  05  06  07 08  09  10  11  12  13  14  15 16  17  18  19  20  21  22  23 24  25  26  27  28  29  30  31 Type = 3 Code Header checksum unused Next-hop MTU IP header and first 8 bytes of original datagram's data

Kaде:
Type полето мора да биде поставено на 3.
Code полето специфицира типот на грешка која настанала,и може да биде едно од следните:
{| class="wikitable"
! Code || Description
|-
! 0
| Network unreachable error.
|-
! 1
| Host unreachable error.
|-
! 2
| Protocol unreachable error (the designated transport protocol is not supported).
|-
! 3
| Port unreachable error (the designated protocol is unable to inform the host of the incoming message).
|-
! 4
| The datagram is too big. Packet fragmentation is required but the 'don't fragment' (DF) flag is on.
|-
! 5
| Source route failed error.
|-
! 6
| Destination network unknown error.
|-
! 7
| Destination host unknown error.
|-
! 8
| Source host isolated error.
|-
! 9
| The destination network is administratively prohibited.
|-
! 10
| The destination host is administratively prohibited.
|-
! 11
| The network is unreachable for Type Of Service.
|-
! 12
| The host is unreachable for Type Of Service.
|-
! 13
| Communication administratively prohibited (administrative filtering prevents packet from being forwarded).
|-
! 14
| Host precedence violation (indicates the requested precedence is not permitted for the combination of host or network and port).
|-
! 15
| Precedence cutoff in effect (precedence of datagram is below the level set by the network administrators).
|}

Поврзано

 ICMP tunnel
 ICMP hole punching
 ICMPv6
 IRDP
 PMTU blackhole
 Pathping
 Path MTU Discovery
 Ping
 Smurf attack
 TCP

Надворешни врски

 RFCs
 RFC 792, Internet Control Message Protocol
 RFC 950
 RFC 1016 - Something a Host Could Do with Source Quench: The Source Quench Introduced Delay (SQuID)
 RFC 1122, Requirements for Internet Hosts – Communication Layers
 RFC 1716, Towards Requirements for IP Router
 RFC 1812, Requirements for IP Version 4 Routers
 IANA ICMP parameters
 IANA protocol numbers
 Explanation of ICMP Redirect Behavior

Наводи