ICMP (Internet Control Message Protocol) on apuohjelma, jota käytetään tietoverkkojen virheraportointi- ja diagnostiikkatarkoituksiin. ICMP on osa Internet Protocol (IP) Suitea ja koostuu ennalta määritetyistä viesteistä, joilla on eri tarkoitukset. Useimmat Internet Control Message Protocol -protokollan näkökohdat jäävät loppukäyttäjien huomaamatta, mutta muutamat verkkotyökalut, kuten traceroute ja ping, toimivat ICMP -viesteissä.
Sekä Internetin että pienempien tietokoneverkkojen ytimessä on kokoelma protokollia, jotka tunnetaan nimellä IP Suite. Nämä protokollat määrittävät verkkolaitteiden välillä vaihdettavien viestien muodot ja määrittävät säännöt viestien lähettämiselle ja vastaanottamiselle. Protokollat ovat myös kerroksellisia, ja jokainen kerros luottaa alla olevaan kerrokseen. ICMP on osa toiseksi korkeinta kerrosta, Internet-kerrosta. Tämä kerros sisältää tunnetun Internet -protokollan, joka vastaa yksittäisten tietoryhmien, joita kutsutaan paketeiksi, siirtämisestä yhden tai useamman verkon yli.
ICMP: tä käytetään lähettämään virheilmoituksia tai diagnostiikkatietoja laitteiden tai isäntien välillä Internet -protokollan avulla. ICMP -viestit ovat ennalta määritettyjä, ja niihin voidaan viitata joko nimen tai tyyppinumeron avulla. Suurin osa näistä viesteistä on tarkoitettu erityyppisille virheraportoinnille. Jos esimerkiksi tiettyä isäntää ei tavoiteta, usein luodaan ICMP -viesti, joka osoittaa tietyn ongelman, joka estää tietojen toimittamisen. Muunlaisia viestejä lähetetään, jos paketit vioittuvat tai jos verkon reititin tai isäntä on ruuhkautunut.
Paketin enimmäiskoko ei ole ennalta määritetty, vaan tietyn verkkolinkin maksimilähetysyksikkö (MTU) määrää sen. Eri linkeillä voi olla erilaiset MTU: t, mutta paketin on oltava pienempi kuin tietyn polun pienin MTU, jotta se voi suorittaa matkansa. Tekniikka, joka tunnetaan nimellä Path MTU Discovery (PMTUD), käyttää ICMP -viestejä ilmoittaakseen lähettäjälle, kun paketit ovat liian suuria tietylle polkuosalle.
Aiheeseen liittyvä protokolla, joka tunnetaan nimellä ICMP Router Discovery Protocol (IRDP), voi helpottaa automaattista verkon määritystä sitä tukeville isännille. IRDP käyttää kahdenlaisia Internet Control Message Protocol -sanomia ilmoittaakseen ja löytääkseen lähistöllä olevia reitittimiä, eli isäntiä, jotka yhdistävät kaksi tai useampia verkkoja. IRDP: tä tukeva reititin lähettää ajoittain ICMP -reitittimen mainosviestin, joka ilmoittaa läsnäolostaan isännille. Isännät voivat myös lähettää pyyntöviestin, jossa pyydetään kaikkia lähellä olevia reitittimiä tunnistamaan itsensä.
Jotkut suositut verkkoapuohjelmat tukeutuvat myös Internet Control Message Protocoliin. Yksi työkalu, traceroute, käyttää ICMP -sanomaa, joka luodaan, kun paketti on vanhentunut tai ylittänyt ”elinaikansa” (TTL). Kun asetat paketille tarkoituksellisesti alhaisen TTL -arvon, traceroute vastaanottaa ICMP Time Exceeded -viestin viimeiseltä reitittimeltä, jonka paketti saavutti ennen vanhenemista. Tämän prosessin toistaminen ja TTL -arvon nostaminen luo teoriassa luettelon kaikista isäntäpaketeista, jotka kulkevat.
Toinen ping -työkalu perustuu ICMP Echo Request -sanomaan, johon vastataan ICMP Echo Reply -viestillä. Valitettavasti pingiä voidaan myös käyttää väärin niin kutsutussa ”smurffi-hyökkäyksessä”, kun hakkeri lähettää kaikupyynnöt väärennetyillä lähettäjätiedoilla, joihin monet muut koneet vastaavat. Tämä voi ruuhkauttaa verkon siihen pisteeseen, että lailliset paketit eivät pääse läpi, mikä tunnetaan palvelunestoina.