Neocenitelnými nástroji pro diagnostiku síťových problémů všeho druhu jsou příkazy ping a traceroute (tracert). Pro zjištění, ve které části síťové infrastruktury je ale obvykle žádoucí spustit je z několika různých míst. Existuje proto množství veřejných serverů, které vám tyto nástroje umožní spustit. Jejich přehled najdete například na www.traceroute.org. Chce to ovšem trpělivost, řada serverů tamo uvedených je nefunkční.

V zájmu rozmnožení jejich řad jsem napsal webovou aplikaci (přesněji modul pro IIS), který umožňuje jednoduše nabídnout možnost pingu a traceroute na jakémkoliv serveru. Jmenuje se IIS Network Diagnostic Tools a je zdarma ke stažení na http://iisnetdiag.codeplex.com/.

Co umí PING

Příkaz ping funguje tak, že vygeneruje náhodná data (na Windows typicky 32 bajtů, neřeknete-li jinak) a jako ICMP echo request je pošle cílovému klientovi, tedy počítači, jehož dostupnost chcete ověřit. Ten tatáž data pošle v podobě ICMP echo reply zpátky. Pingající počítač pak dokáže zjistit, jak dlouho to trvalo, případně zda vůbec dostal odpověď.

Ping má následující podstatné parametry:

Norma RFC1122 sice stanoví, že každý počítač musí ICMP echo request přijmout a také na něj odpovědět, ale v dnešní době je to bohapustá teorie a zbožné přání. Velké množství firewallů ping blokuje, z údajně bezpečnostních důvodů. Pokud vám tedy neznámý počítač neodpovídá na ping, samo o sobě to nic neznamená, klidně může běžet a fungovat.

Co umí TRACEROUTE

Příkaz traceroute (na Windows tracert) představuje jenom komplikovanější formu použití příkazu ping. Jeho cílem je zobrazit cestu, jakou pakety šly. Ping vám řekne jenom, jestli se k danému cílovému počítači dostanete, ale už ne, kde je problém. Traceroute ano.

Postupuje tak, že opakovaně posílá ping, u kterého postupně zvyšuje parametr TTL. Tím vlastně "pingá" a odhaluje postupně všechny routery po cestě. Pokud některý neodpoví, nenechá se tím odradit a pošle další požadavek s TTL o jedna vyšším. Pokračuje, dokud mu neodpoví cílový stroj a nebo dokud není vyčerpán celkový počet pokusů (standardně 30).

IIS Network Diagnostic Tools

Funkcionalita PINGu je v .NETu součástí třídy System.Net.NetworkInformation.Ping. Je tedy velmi snadné si obě dvě služby napsat.  IIS Network Diagnostic Tools sestávají ze čtyř tříd:

Aplikaci včetně zdrojového kódu si můžete stáhnout na iisnetdiag.codeplex.com, naživo si  ji můžete vyzkoušet z našeho serveru v ČR nebo v USA.