Ping test

Co to jest ping

Tytułowy ping to jedno z najpopularniejszych i najbardziej przydatnych narzędzi służących do diagnozowania połączeń sieciowych opartych o protokół TCP/IP. Jego implementację można napotkać w praktycznie każdym systemie operacyjnym obsługującym wyżej wymieniony protokół. Funkcjonalność pinga opiera się na bardzo prostej zasadzie działania, polegającej na wysłaniu z lokalnego komputera pakietu ICMP ECHO_REQUEST do maszyny zdalnej, a następnie oczekiwaniu na odpowiedź w postaci pakietu ICMP ECHO_REPLY. 

Przykład zastosowania narzędzia ping w praktyce (wywołuje się je z linii poleceń podając jako parametr adres IP lub nazwę symboliczną urządzenia docelowego – może być to komputer, ale również router lub nawet drukarka sieciowa):

OpenBSD:

-bash-3.2$ ping 10.0.0.2

PING 10.0.0.2 (10.0.0.2): 56 data bytes

64 bytes from 10.0.0.2: icmp_seq=0 ttl=128 time=0.347 ms

64 bytes from 10.0.0.2: icmp_seq=1 ttl=128 time=0.170 ms

64 bytes from 10.0.0.2: icmp_seq=2 ttl=128 time=0.167 ms

64 bytes from 10.0.0.2: icmp_seq=3 ttl=128 time=0.169 ms

64 bytes from 10.0.0.2: icmp_seq=4 ttl=128 time=0.166 ms

--- 10.0.0.2 ping statistics ---

5 packets transmitted, 5 packets received, 0.0% packet loss

round-trip min/avg/max/std-dev = 0.166/0.203/0.347/0.073 ms

Windows:

C:>ping 10.0.0.2

Badanie 10.0.0.2 z 32 bajtami danych:

Odpowiedź z 10.0.0.2: bajtów=32 czas<1 ms TTL=128

Odpowiedź z 10.0.0.2: bajtów=32 czas<1 ms TTL=128

Odpowiedź z 10.0.0.2: bajtów=32 czas<1 ms TTL=128

Odpowiedź z 10.0.0.2: bajtów=32 czas<1 ms TTL=128

Statystyka badania ping dla 10.0.0.2:

Pakiety: Wysłane = 4, Odebrane = 4, Utracone = 0

       (0% straty),

Szacunkowy czas błądzenia pakietów w millisekundach:

 Minimum = 0 ms, Maksimum = 0 ms, Czas średni = 0 ms

Za pomocą narzędzia ping można uzyskać podstawowe informacje dotyczące stanu połączenia sieciowego pomiędzy lokalnym komputerem, a urządzeniem zdalnym:

•Czy urządzenie jest podłączone do sieci oraz czy odpowiada na żądanie ECHO_REQUEST za pomocą prawidłowo skonstruowanego pakietu ECHO_REPLY.

•Jaki jest przeciętne opóźnienie w uzyskaniu odpowiedzi (potocznie zwane lagiem), wyrażane w milisekundach.

•Jaka część ogólnej liczby pakietów dociera do adresata, a jaka ulega zagubieniu. Parametr ten wyrażany jest w procentach, jego wartość wyższa od zera wskazuje na problemy techniczne łącza komunikacyjnego.

Należy w tym miejscu jednak wyraźnie zaznaczyć, że rezultaty uzyskiwane za pomocą pinga  nie zawsze przedstawiają wiarygodny obraz stanu połączeń sieciowych – w przeważającej większości popularnych systemów operacyjnych istnieje możliwość wyłączenia reakcji na nadchodzące pakiety ECHO_REQUEST (np. za pomocą oprogramowania typu firewall), co spowoduje brak pakietów ECHO_REPLY w odpowiedzi i tym samym może stanowić powód do podejrzenia awarii łącza, mimo jego poprawnego funkcjonowanie. Z tego też powodu ping stosuje się zazwyczaj do wstępnej diagnostyki znanych użytkownikowi/administratorowi lokalnych sieci komputerowych, natomiast w zastosowaniach profesjonalnych jest jedynie jednym z wielu wykorzystywanych narzędzi. Drugim ważnym aspektem pinga jest fakt, że dostarcza on informacji jedynie na temat stanu połączenia sieciowego – uzyskanie odpowiedzi od zdalnej maszyny oznacza tylko tyle, że jest ona podłączona do sieci i odpowiada na żądanie ping, nie można jednak na tej podstawie wysnuwać wniosków o rodzaju i stanie usług uruchomionych na testowanym urządzeniu, a nawet nie można zakładać, że jego system operacyjny pracuje prawidłowo (stosunkowo często spotykane są przypadki, gdzie komputer odpowiada na pingi mimo zawieszenia się systemu operacyjnego).

Narzędzie ping w zależności od implementacji w danym systemie operacyjnym może zawierać szereg dodatkowych opcji (w systemach unixowych można je poznać za pomocą polecenia man ping, natomiast w systemach z rodziny Windows poleceniem tym jest ping -?):

•Ping ciągły, aż do przerwania ze strony użytkownika (zachowanie domyślne w systemach unixowych, parametr -t w Windows,np.: „ping –t 10.0.0.2”).

•Definiowalny rozmiar pakietu w bajtach, od 1 do ok. 65500 bajtów (parametr –s w systemach unixowych, -l w Windows, np. ping –s 128 10.0.0.2 spowoduje wysłanie pakietu o rozmiarze 128 bajtów zamiast domyślnych 32). Opcja ta jest przydatna szczególnie w przypadku sieci bezprzewodowych, w których sporadycznie może pojawić się zjawisko gubienia dużych pakietów, przy całkowicie bezproblemowym przesyłaniu małych.

•Kilkanaście innych, rzadziej wykorzystywanych parametrów, takich, jak np. określona liczba pakietów do wysłania (-c w systemach unixowych, -n w Windows), tzw. ping flood, czyli maksymalna możliwa liczba pakietów do jednoczesnego wysłania, określenie parametru TTL, czyli maksymalnej liczby węzłów do przebycia na drodze do urządzenia docelowego itp.

Jako ciekawostkę na zakończenie artykułu można podać fakt, że blokowanie odpowiedzi na żądania pinga jest spowodowane nie tylko chęcią ograniczenia ruchu sieciowego oraz zmniejszenia potencjalnego zagrożenia związanego z dodatkową usługą pracującą na serwerze, ale również z uwagi na to, że każdy z systemów operacyjnych nieco inaczej tworzy pakiet odpowiedzi ECHO_REPLY, umieszczając w nim charakterystyczne ciągi znaków – może więc posłużyć on do próby identyfikacji systemu operacyjnego pracującego na serwerze, a co się z tym wiąże ułatwienia zadania potencjalnemu włamywaczowi lub osobie o innych niepożądanych zamiarach