Luc@s
26 September 2006, 22:17
ICMP, iedereen heeft er wel eens van gehoord, was het niet onder ICMP, dan was het wel onder de naam ping of onder de naam trace route.
Neen, ICMP= niet ping, ICMP= ook niet trace route maar ping is wel ICMP en trace rute bestaat ook uit ICMP
moeilijk ? nee hoor ...Internet Control Message Protocol (RFC792) een protocol dat instaat voor het medelen of testen van de netwerk-connectiviteit. ping is hier een onderdeel van, net zoals trace route.
leuk ? ja hoor, best wel, lees maar verder ...
Laten we eens een ping bekijken. Als je een ping doet naar je localhost (127.0.0.1 = default loopback adress) krijg je ongeveer zoiets
ping localhost : Reply from 127.0.0.1: bytes=32 time<1ms TTL=128
het eerste deel is duidelijk denk ik, je krijgt een antwoord.
het tweede deel, "bytes=32" defineert de grootte van het verzonden ICMP packet, in dit geval 32 bytes, dit kan je vergroten of verkleinen met de optie -l
ping -l 1024 localhost : Reply from 127.0.0.1: bytes=1024 time<1ms TTL=128 het packet dat je stuurt is in dit geval veel groter, dit kan een verschillend resultaat opgeven in geval van netwerk problemen.
de tijd (time<1ms) is ook vrij duidelijk, dat is de tijd die overgaat vooraleer je een antwoord gekregen hebt. (hieruit wordt de round-trip delay bepaald)
en dan het laatste gedeelte :ooit gehoord van TTL ? TTL staat voor time to live.
Als een packet verzonden wordt op een netwerk, dan krijgt het een TTL waarde mee, dit is een waarde uitgedrukt in hops (een hop is een routeringspunt waar het packet passeert)
Standaard op een windows doos, heeft een packet een TTL van 128. Op een *nix doos of op een router, is de TTL default 64 (maar dit hoeft zo niet te zijn, dit kan perfect aangepast worden, zelfs in een windoos)
wat is nu Time to live ? Letterlijk vertaalt: tijd om te leven. Welnu, elke keer als dit packet een router passeert, krijg je TTL -1, dus als je met je windoos een packet stuurt naar een bestemming die 5 hops verwijderd is van je pc ( een ping naar een dns server van je provider bv) dan komt je icmp packetje daar toe met een TTL van 120 ; geen probleem dus, het packetje valt perfect binnen de grenzen van TTL en wordt op dit vlak dus perfect geaccepteerd.
een netwerk (internet) bestaat uit routes, elke destinatie moet via wegwijzers gedefineerd zijn. Wanneer er zich een fout in deze routering bevindt, wil dit zeggen dat de kans groot is dat er ergens routing-loops ontstaan wat erop neer komt dat bepaalde packetten doelloos op het netwerk blijven ronddolen.
Om dit te voorkomen, is deze TTL in leven geroepen. Eens de TTL bereikt is word het packet onvermijdelijk weggegooid ( discarded) en wordt er een ICMP message terug gestuurd dat de doelhost niet bereikbaar is. (vandaar dat ik een pest heb aan firewalls die icmp blokkeren, dit is meer in uw nadeel dan in uw voordeel ..)
Dit brengt ons dan ook ineens bij de werking van tracert of trace route.
Bij een trace route, worden er opeenvolgend ICMP packetten uitgezonden met een TTL van +1. Eens de eerste hop bereikt, wordt het packet ge-discard en krijgt de vragende machine daar bericht van; op deze manier weet je doos de naam en IP-address van de machine die het packet gedropt heeft. Vervolgens verzend je machine een packet met dezelfde destinatie maar met en TTL van +1. De machine na diegene die zojuist een packet heeft gedropt, zend je een ICMP bericht dat het packet gedropt is wegens een verstreken TTL (TTL expired). Op deze manier heb je dan reeds de naam en ip van de eerste & de tweede hop... dit gaat zo door tot de uiteindelijke bestemming in kaart gebracht is, met als resultaat de bekende trace route....
ICMP doet nog veel meer, als een doelhost bv niet kan volgen in dataflow, word er via ICMP een bericht gestuurd de transmissie te vertragen/stoppen.Vandaar dat U er alle baat bij heeft dit protocol wel toe te laten.
Tot slot kan ik jullie verzekeren dat het blokkeren van ICMP weinig gaat doen aan de veiligheid van je netwerk, tenslotte, tcp bestaat uit een 3-way handshake, dus ook al antwoord een netwerk niet op een ping, dat wi écht niet zeggen dat het niet detecteerbaar is. ( lees de paginas op http://insecure.org/nmap/ (http://http://insecure.org/nmap/) maar eens ;-)
groetjes
L.
Neen, ICMP= niet ping, ICMP= ook niet trace route maar ping is wel ICMP en trace rute bestaat ook uit ICMP
moeilijk ? nee hoor ...Internet Control Message Protocol (RFC792) een protocol dat instaat voor het medelen of testen van de netwerk-connectiviteit. ping is hier een onderdeel van, net zoals trace route.
leuk ? ja hoor, best wel, lees maar verder ...
Laten we eens een ping bekijken. Als je een ping doet naar je localhost (127.0.0.1 = default loopback adress) krijg je ongeveer zoiets
ping localhost : Reply from 127.0.0.1: bytes=32 time<1ms TTL=128
het eerste deel is duidelijk denk ik, je krijgt een antwoord.
het tweede deel, "bytes=32" defineert de grootte van het verzonden ICMP packet, in dit geval 32 bytes, dit kan je vergroten of verkleinen met de optie -l
ping -l 1024 localhost : Reply from 127.0.0.1: bytes=1024 time<1ms TTL=128 het packet dat je stuurt is in dit geval veel groter, dit kan een verschillend resultaat opgeven in geval van netwerk problemen.
de tijd (time<1ms) is ook vrij duidelijk, dat is de tijd die overgaat vooraleer je een antwoord gekregen hebt. (hieruit wordt de round-trip delay bepaald)
en dan het laatste gedeelte :ooit gehoord van TTL ? TTL staat voor time to live.
Als een packet verzonden wordt op een netwerk, dan krijgt het een TTL waarde mee, dit is een waarde uitgedrukt in hops (een hop is een routeringspunt waar het packet passeert)
Standaard op een windows doos, heeft een packet een TTL van 128. Op een *nix doos of op een router, is de TTL default 64 (maar dit hoeft zo niet te zijn, dit kan perfect aangepast worden, zelfs in een windoos)
wat is nu Time to live ? Letterlijk vertaalt: tijd om te leven. Welnu, elke keer als dit packet een router passeert, krijg je TTL -1, dus als je met je windoos een packet stuurt naar een bestemming die 5 hops verwijderd is van je pc ( een ping naar een dns server van je provider bv) dan komt je icmp packetje daar toe met een TTL van 120 ; geen probleem dus, het packetje valt perfect binnen de grenzen van TTL en wordt op dit vlak dus perfect geaccepteerd.
een netwerk (internet) bestaat uit routes, elke destinatie moet via wegwijzers gedefineerd zijn. Wanneer er zich een fout in deze routering bevindt, wil dit zeggen dat de kans groot is dat er ergens routing-loops ontstaan wat erop neer komt dat bepaalde packetten doelloos op het netwerk blijven ronddolen.
Om dit te voorkomen, is deze TTL in leven geroepen. Eens de TTL bereikt is word het packet onvermijdelijk weggegooid ( discarded) en wordt er een ICMP message terug gestuurd dat de doelhost niet bereikbaar is. (vandaar dat ik een pest heb aan firewalls die icmp blokkeren, dit is meer in uw nadeel dan in uw voordeel ..)
Dit brengt ons dan ook ineens bij de werking van tracert of trace route.
Bij een trace route, worden er opeenvolgend ICMP packetten uitgezonden met een TTL van +1. Eens de eerste hop bereikt, wordt het packet ge-discard en krijgt de vragende machine daar bericht van; op deze manier weet je doos de naam en IP-address van de machine die het packet gedropt heeft. Vervolgens verzend je machine een packet met dezelfde destinatie maar met en TTL van +1. De machine na diegene die zojuist een packet heeft gedropt, zend je een ICMP bericht dat het packet gedropt is wegens een verstreken TTL (TTL expired). Op deze manier heb je dan reeds de naam en ip van de eerste & de tweede hop... dit gaat zo door tot de uiteindelijke bestemming in kaart gebracht is, met als resultaat de bekende trace route....
ICMP doet nog veel meer, als een doelhost bv niet kan volgen in dataflow, word er via ICMP een bericht gestuurd de transmissie te vertragen/stoppen.Vandaar dat U er alle baat bij heeft dit protocol wel toe te laten.
Tot slot kan ik jullie verzekeren dat het blokkeren van ICMP weinig gaat doen aan de veiligheid van je netwerk, tenslotte, tcp bestaat uit een 3-way handshake, dus ook al antwoord een netwerk niet op een ping, dat wi écht niet zeggen dat het niet detecteerbaar is. ( lees de paginas op http://insecure.org/nmap/ (http://http://insecure.org/nmap/) maar eens ;-)
groetjes
L.