Az ICMP az IP adatforgalom üzenetküldő protokollja. Működése legtöbbször a háttérben húzódik meg a felhasználó számára észrevétlenül, ugyanakkor léteznek parancssori segédprogramok, melyek csak ICMP-t használva hálózattesztelésre készültek. A protokoll leírása megtalálható az RFC 792-es számú dokumentációjában. Még a TCP/IP korai fázisában fejlesztették ki, ezért gyakorlatilag minden operációs rendszerben megtalálható. Sőt a hozzá tartozó parancssori segédprogramok is hallgatólagos szabvánnyá váltak és használatukban kis eltérést tapasztalunk például a Windows és a Linux verziók között.
Az IP küldést megvalósító aktív hálózati elemek állapotjelzése zajlik az ICMP üzenetekkel. Aktív hálózati elem egy hálózati kártya, egy útválasztó és minden, ami IP csomagokat küld és fogad és rendelkezik IP címmel. Mikor keletkeznek az üzenetek?
- Ha egy IP csomag nem ért célba
- Ha az útválasztó konfigurációja olyan, hogy nem képes az adott feltételekkel továbbítani a csomagot.
- Ha az útválasztó az adott sebességen nem képes a továbbításra.
- Illetve, ha az útválasztó átirányítja a csomagot egy másik útvonalra.
- Hálózati diagnosztikánál.
- Útválasztó táblák felépítésénél és karbantartásánál.
- Útválasztó keresésnél.
- PMTU meghatározásnál (lásd lejjebb).
Az IP adatcsomagok két fő részre oszthatók: fejléc és tartalom. Utóbbi beágyazva tartalmazza az ICMP üzeneteket, tehát IP nélkül nincs ICMP sem.
PMTU meghatározás
Ha két eszköz között létrejön a hálózati kapcsolat, akkor kicserélik egymással a Maximum Segment Size (MSS) (=legnagyobb szegmens méret) értékeiket. Különbözőség estén mindig a kisebbikkel kommunikálnak. Ha a csomag küldője Windows 2000-et futtató gép, akkor egy flag-ben csomag töredezettségre vonatkozó adatot is küld. Amennyiben a fogadó egy útválasztó, akkor a következő válaszokat adhatja:
- Elutasítja a csomagot és egy ICMP üzenetben visszajelez a küldőnek. Az ilyen jellegű üzeneteknek ez a célja. Így a felhasználó szempontjából értékes adatátvitel és diagnosztikai szoftverek nélkül megállapítható a kapcsolat létrejötte.
- Elutasítja a csomagot és visszajelez egy ICMP üzenetben. Ezenkívül elküldi a használható szegmens méretét.
- Elutasítja a csomagot és nem jelez vissza, mintegy fekete lyukként működik, ami hasonlít egy tűzfal működéséhez.
ICMP üzenetek engedélyezése a Windows XP tűzfalán keresztül
Alapértelmezésben az XP tűzfala nem enged át ICMP üzeneteket, tehát egy külső próbálkozó számára úgy viselkedik a gép, mint ha nem is lenne. Viszont ezzel elveszik az ICMP használatának egyik legnagyobb előnye a hálózati diagnosztika lehetősége. A megoldás bizonyos vagy az összes ICMP üzenet engedélyezése.
Nyissuk meg Vezérlőpult > (Hálózati és internetes kapcsolatok) > Hálózati kapcsolatok (Control Panel > (Network and Internet Connections) > Network Connections) mappát. Keressük meg a kapcsolatot, amelyik tűzfallal van védve és engedélyezni kívánjuk az ICMP forgalmát. Kattintsunk rá a jobboldali egérgombbal, majd lépjünk a "Tulajdonságok" ("Properties") menüre, utána a "Speciális" ("Advanced") oldalra. Bekapcsolt tűzfal mellett elérhető az oldal alján lévő "Beállítások" ("Settings") gomb - kattintsunk rá. Megjelenik egy újabb ablak, ahol kattintsunk az "ICMP" oldalra. A listában található jelölőnégyzetek ki- és bekapcsolásával szabályozható a forgalom. Például egy alapszintű PING csomag fogadásához aktivizáljuk a "Bejövő echo kérés engedélyezése" ("Allow incoming echo request") jelölőnégyzetet.
ICMP üzeneteket használó parancssori segédprogramok
Legalapvetőbb - több operációs rendszeren is meglévő - segédprogram a PING. Lényege, hogy ICMP üzeneteket küld egy IP címmel rendelkező állomásnak (számítógép, útválasztó, átjáró, stb.) és a visszakapott válaszokat feldolgozza és megjeleníti a képernyőn, mérve a küldött és kapott csomagok számát, illetve az átvitelhez szükséges időt. Nézzünk néhány példát a használatára:
Echo üzeneteket küld a 192.168.0.10-es IP címmel ellátott gép számára. Ha a célállomás válaszol, akkor kiírja a csomagstatisztikát, ha nem, akkor ezt is jelzi. IP cím helyett gépnevet is használhatunk. Mit jelent a válasz? A két gép között van TCP/IP hálózati kapcsolat. Ha ugyanez IP cím helyett gépnévvel is működik, akkor a névfeloldási rendszer is helyesen van konfigurálva.
Alapértelmezésben 4 csomag küldése és fogadása történik, de a -t kapcsolóval végteleníthető a csomagszám:
Minden csomaghoz tartozik egy életben maradási Time-to-Live (TTL) érték, ami minden ugrás alkalmával eggyel csökken. Az ugrás egy útválasztón való áthaladás. Ha elérte a nullát, a csomag elveszik. Tesztünk során megadható, hogy a csomag számára maximálisan mennyi ugrást engedélyezünk:
Példánkban tizet.
Szintén a TTL alkalmazására épül a hálózati útvonalkövetésre használható TRACERT program. Feladata megjeleníteni a képernyőn, hogy az ICMP csomagok milyen állomásokon keresztül haladnak. Hasonlít a PING-hez, de az ugrásokról is mutat adatokat. Használata nagyon egyszerű: adjuk meg paraméterként a tesztelendő célállomás nevét. A többi megjelenik a monitoron.
tracert server.microsoft.com