Programy ping i tracert
Ping
Autorem programu ping jest Michael John Muuss (16.10.1958 - 20.11.2000).
Program został napisany w grudniu 1983 r. i działał w systemie BSD UNIX 4.2a. Ping
jest narzędziem sieciowym używanym w sieciach opartych na protokole IP. Jego podstawowym
zadaniem jest sprawdzanie, czy badany host jest osiągalny w sieci. Program mierzy przy tym czas
całkowitej wędrówki pakietu między komputerem badającym a badanym. Ponadto po zakończeniu
badania program wyświetla statystyki dotyczące m.in. minimalnego, maksymalnego
i średniego czasu wędrówki pakietów, jak również procent pakietów utraconych.
Do swej pracy program używa protokołu ICMP (protokół internetowy komunikatów kontrolnych,
opisany w dokumencie RFC-792). Działanie polega na wysyłaniu komunikatu nr 8 (Echo Request
- żądanie echa) i oczekiwaniu przez ustalony czas na nadejście odpowiedzi na wysłaną wiadomość.
Odpowiedź może nadejść w postaci komunikatu nr 0 (Echo Reply - odpowiedź na żądanie echa)
lub jako komunikat nr 3 (Destination Unreachable - nieosiągalność adresata).
Czas mierzony jest od momentu wysłania żądania echa do momentu otrzymania jego potwierdzenia.
Brak odpowiedzi w programie ping wcale nie musi oznaczać, że adresat jest nieosiągalny.
Na początku 2003 roku niektórzy dostawcy Internetu zaczęli ustawiać tak swoje zapory sieciowe,
aby nie przepuszczały komunikatów żądania echa protokołu ICMP. Działania te były spowodowane
pojawieniem się komputerowego robaka “Welchia”, który zalewał sieć żądaniami
echa w celu lokalizowania swych ofiar.
Obecnie ping dostępny jest praktycznie we wszystkich systemach operacyjnych
w którym dostępny jest stos TCP/IP, choć ustawienia domyślne mogą się różnić.
Dla przykładu, w systemie Windows program wykonuje 4 próby badania hosta.
W systemach UNIX z kolei, próby wykonywane są do momentu przerwania pracy programu.
Standardowa długość pakietu to 32 bajty w systemach firmy Microsoft, a 64 bajty w systemach UNIX.
Długość pakietu można zmieniać i wynosi ona maksymalnie do 65500 bajtów dla obu systemów.
Traceroute
Autorem pierwszej wersji programu traceroute jest Van Jacobson. Został on napisany w roku 1987. Zgodnie z nazwą, program śledzi trasę, przez jaką przechodzą pakiety wysłane z komputera wysyłającego do adresu zdalnego.
Przed omówieniem pracy programu należy zapoznać się z terminem TTL. TTL to ośmiobitowe pole zawarte w każdym datagramie IP, nazwa pola to skrót angielskich słów Time To Live. Pole to zawiera informację o tzw. czasie życia datagramu, czyli informację o maksymalnym czasie podanym w sekundach, w którym datagram ten może pozostać w sieci. Przy wysyłaniu jakiegokolwiek datagramu IP system operacyjny ustawia pewną wartość początkową pola TTL. Wymogiem każdego routera sieciowego jest zmniejszanie wartości TTL o taką ilość czasu, jaką potrzebował router na przetworzenie owego datagramu. Ponieważ jednak przetwarzanie to zajmuje na ogół ułamki sekund, to wymóg mówi, że należy odjąć wartość nie mniejszą niż 1. Jeśli wartość pola wynosi zero, to wówczas datagram powinien zostać usunięty i powinien zostać wysyłany do jego nadawcy komunikat nr 11 (Time Exceeded - przekroczenie limitu czasu) protokołu ICMP. Dzięki polu TTL zlikwidowano możliwość sytuacji, w których datagramy mogłyby się zapętlić i pozostawać w sieci cały czas. Wyobraźmy sobie następującą sytuację. Router A został tak skonfigurowany że przekazuje pewien datagram do routera B, natomiast router B po analizie datagramu, wysyła go znowu do routera A. W sytuacji tej datagram krążyłby ciągle między routerami, jednakże dzięki TTL do takiej sytuacji nie dojdzie. Właśnie omówione cechy zostały wykorzystane do napisania narządzia traceroute.
Program traceroute działa w ten sposób, że pod wskazany adres wysyła pakiety z różnym ustawieniem pola TTL. Na początku wartość wynosi 1, potem 2, itd. W ten sposób będą napływały komunikaty ICMP nr 11, których adresatem będą poszczególne hosty przez które pakiet przechodził.
Omawiane narzędzie jest także dostępne w większości systemów operacyjnych, które obsługują stos TCP/IP, jednakże występują większe różnice między systemami operacyjnymi, aniżeli w przypadku programu ping. Np. w systemach UNIX program wysyła domyślnie datagramy UDP z portem docelowym zaczynającym się od 33434. Z kolei w systemach Windows program tracert (inna nazwa programu!) wysyła komunikaty nr 8 protokołu ICMP. Cechą wspólną programu dla wszystkich systemów jest to, że polega on na powracających komunikatach nr 11 protokółu ICMP.
Śledzenia trasy pingiem?
Co ciekawe program ping także umożliwia (z pewnymi ograniczeniami) śledzenie trasy pakietu. Należy w tym celu użyć przełącznika "-r" i wpisać liczbę przeskoków, które mają być zbadane (np. "ping -r 6 www.pichen.com"). Nie działa on wówczas tak jak traceroute, tzn. nie wysyła serii datagramów z kolejnymi wartościami TTL. Program wysyła natomiast standardowy komunikat żądania echa, lecz także włącza opcję Record Route (zapamiętaj trasę) w nagłówku IP. Kiedy router otrzymuje datagram z aktywną opcją zapamiętania trasy, to powinien wpisać w rekordzie trasy adres na jaki datagram zostanie przekazany przez router. Każde następne routery wpisują do rekordu trasy kolejne adresy. Wynika z tego, że podawane adresy śledzenia trasy pokazują adresy interfejsów, na jakie w wyniku routingu, został skierowany datagram z żądaniem echa.
Ograniczeniem metody jest to, że można śledzić trasę dla maksymalnie 9 przeskoków. Ponadto ze względów wydajnościowych nie wszystkie routery są skonfigurowane tak, aby mogły dopisywać dane do rekordu trasy, dlatego rzadko korzysta się z opcji śledzenia trasy programu ping.
Waszym zdaniem...
Na razie nie ma jeszcze żadnych komentarzy. Bądź pierwszy!
Komentarz nie powinien zawierać tagów HTML. Zostaną one automatycznie usunięte.