Utilitarul ping

Cea mai folosita unelta software pentru a testa functionalitatea unei retele la nivelul IP este Ping.

Ping, cea mai folositoare unealta pentru diagnosticarea unei retele isi are numele de la un radar pe baza de sunete folosit in submarine – trimiterea unui sunet scurt si ascultarea dupa ecou.

In retele, ‘ping’ trimite o secventa scurta de date – un singur pachet – si asculta pentru a receptiona un siungur pachet. Deoarece acest test este functia de baza a unei retele TCP/IP (livrarea unui singur pachet), este usor de observat ca putem invata multe din niste ‘ping-uri’.

Ping este implementat folosind functia Echo a protocolului ICMP, descrisa in RFC 792, pe care toate calculatoarele din retea ar trebui sa o aiba implementata. Bineinteles, administratorii pot da disamble la mesajele de ping ( nu este o idee buna, doar daca din considerente de securitate se doresta ca masina respectiva sa nu fie gasita). Oricum, ping este de obicei cel mai bun utilitar dintre aproape toate softurile pentru retea.

Sunt disponibile astazi multe versiuni de ping. In continuare ne vom referi la ping-ul implemantat in UNIX BSD, varianta ce se gaseste pe multe sisteme UNIX. Alte versiuni de ping nu au optiunile avansate descrise aici. Ca de obicei, cititi manualul pentru versiunea pe care o folositi.

Ce ne poate spune ping

Ping pune o secventa unica de numere in fiecare pachet il trimite si raporteaza ce secventa de numere primeste inapoi. Datorita acestui lucru, puteti determina daca pachetele au fost aruncate, duplicate sau reordonate.

Ping verifica fiecare pachet si puteti detecta unele forme de pachete deteriorate.

Ping scrie in fiecare pachet trimis inapoi informatii referitoare la timp, acest lucru putand fi folosit pentru a calcula cat dureaza schimbului fiecarui pachet – Round Trip Time (RTT).

Ping raporteaza si alte mesaje ICMP . De exemplu, raporteaza daca un router declara "target host unreachable"

Ce nu ne poate spune ping

Unele routere pot arunca pachetele netrimise, fara nici un avertisment. Altele pot crede ca packetul a fost trimis cu succes, cand de fapt nu s-a intamplat asa. De accea.ping nu poate indica tot timpul motivul pentru care pachetele trimise nu primesc raspuns.

Ping nu poate spune de ce un pachet a fost altereat, intarziat sau duplicat. Nu poate spune unde s-a intamplat acest lucru, trebuind dedus de catre utilizator.

Ping nu poate da o descriere amuntita despre fiecare masina pe la care trece pachetul si ce se intampla la fiecare pas pe drum. De fapt nici un soft nu poate spune asta intr-o retea TCP/IP.

Utilizare ping

Utilizarea lui Ping ar trebui sa fie primul pas in diagnosticarea retelei. Aveti probleme cu transferul unui fisier prin FTP? Nu porniti analizatorul de pachete inca. Nu dati nici macar comanda "su" – ping este o comanda neprivilegiata in majoritatea sistemelor. Porniti un ping si uitati-va la el pentru cel putin 2 minute. Este destul timp pentru ca problemele periodice ale retelei sa se arate. Dupa ce ati urmarit cam 100 de pachete, va puteti face o idee despre felul in care raspunde. Este timpul de raspuns constant? S-au pierdut pachete? Exista acelasi TTL? Incercati sa dati ping in alt host. Incercati in masina cea mai apropiata. Problema se poate sa fie mai aproape decat credeti. Incercati ultimul router – poate sistemul destinatie este suprasolicitat (in special daca este un site popular pe internet, ca acesta 🙂 ). Nu stiti care este ultimul router? Utilizati traceroute sau ghiciti – shimband ultimul numar al ip-ului in 1, obtineti rezultate interesant, de obicei. Incercati alte site-uri care se afla in retele cu topologie asemanatoare cu a voastra. Ati inceput sa invatati cum raspunde reteua voastra? Bine. Si, ah da, mergeti si verificati FTP-ul, probabil a terminat pana acum.

Mai jos aveti o lista a optiunilor in caz ca vreti sa le folositi (ping in BSD)

-c count
Trimite un nr de pachete egal cu count si se opreste. O alta modalitate de oprire este CTRL-C. Aceasta optiune este utila in cazul scripturilor care testeaza periodic reteaua.

-f
Flood ping. Trimite pachetele foarte repede, cel putin 100 de pachete pe secunda. Folositi aceasta optiune cu atentie.

-l preload
Trimite un numar de pachete egal cu preload cat de repede se poate, apoi revine in modul normal de operare. Util pentru a afla cate pachete poate gestiona routerul.

-n
Numeric output only. Folositi aceasta optiune cand aveti probleme cu serverul de nume(DNS) si ping incearca sa va arate numele caruia ii corespunde adresa IP.

-p pattern
Pattern este un sir format din cifre hexazecimale care se adauga la sfarsitul fiecarui pachet trimis. Este util daca suspectati probleme dependente de datele transmise.

-r
Ignora tabelele de routare. Folositi aceasta optiune cand aveti probleme cu routarea si ping nu poate gasi o cale de a ajunge la masina destinatie. Aceasta optiune functioneaza pentru masini ce pot fi gasite fara a trece prin alte routere.

-s packetsize
Modifica marimea pachetelor trimise.

-V
Verbose output. Puteti vedea si alte pachere ICMP care in mod normal nu sunt considerate interesante (si rareori sunt).

Exemple

1. Acest axemplu arata schimbul a 10 pachete prin interfata loopback. O linie este afisata pentru fiecare raspuns primit. De observat ca pentru fiecare secventa este primit un singur raspuns so toate sunt in ordine. Este raportat deasemenea TTL si RTT (round-trip times). La sfarsitul sesiunii sunt aratate statisticile. Acesta este un bun test pentru a verifica setarile de baza pentru retea a masinii proprii. deoarece nu sunt trimise fizic pachete. Orice probleme in aceste test ar trebui sa ne alarmeze.

$ ping -c10 localhost
PING localhost (127.0.0.1): 56 data bytes
64 bytes from 127.0.0.1: icmp_seq=0 ttl=255 time=2 ms
64 bytes from 127.0.0.1: icmp_seq=1 ttl=255 time=2 ms
64 bytes from 127.0.0.1: icmp_seq=2 ttl=255 time=2 ms
64 bytes from 127.0.0.1: icmp_seq=3 ttl=255 time=2 ms
64 bytes from 127.0.0.1: icmp_seq=4 ttl=255 time=2 ms
64 bytes from 127.0.0.1: icmp_seq=5 ttl=255 time=2 ms
64 bytes from 127.0.0.1: icmp_seq=6 ttl=255 time=2 ms
64 bytes from 127.0.0.1: icmp_seq=7 ttl=255 time=2 ms
64 bytes from 127.0.0.1: icmp_seq=8 ttl=255 time=2 ms
64 bytes from 127.0.0.1: icmp_seq=9 ttl=255 time=2 ms
– localhost ping statistics – 10 packets transmitted, 10 packets received, 0% packet loss round-trip min/avg/max = 2/2/2 ms
$

Urmatorul exemplu este mult mai interesant – dam ping intr-un router la care suntem conectati printr-un mediu de transmisie ce ne asigura 128Kbps. Timpii initiali arata bine. Dar dupa aproximativ 50 de secunde, observam fluctuatii mari in RTT. De la pachetul 53 la 54, vedem ca RTT se reduce de 26 de ori. Dar aceasta nu este o problema. Mai observam ca de la pachetul 54 la 55, RTT se mareste de 7 ori. Noi transferam 56 bytes de date, plus headerul ICMP de 8 bytes, plus 20 bytes reprezentand IP header, rezulta un pachet de 84 bytes. La viteza de 128Kbps, 84 de bytes ar trebui sa aiba nevoie de 84*(8/128000) = 6 ms pentru a ajunge la destinatie. Dar trebuie sa se intoarca si inapoi, rezulta deci ca ar avea nevoie de aproximativ 10-15 ms. Valorile pe care le optinem noi la ping nu sunt asa de mici, deci este clar ca sunt probleme.

$ ping sl-stk-3-S17-128k.sprintlink.net
PING sl-stk-3-S17-128k.sprintlink.net (144.228.202.1): 56 data bytes
64 bytes from 144.228.202.1: icmp_seq=0 ttl=254 time=35.653 ms
64 bytes from 144.228.202.1: icmp_seq=1 ttl=254 time=28.797 ms
64 bytes from 144.228.202.1: icmp_seq=2 ttl=254 time=28.559 ms
64 bytes from 144.228.202.1: icmp_seq=3 ttl=254 time=39.533 ms
64 bytes from 144.228.202.1: icmp_seq=4 ttl=254 time=28.621 ms
64 bytes from 144.228.202.1: icmp_seq=5 ttl=254 time=28.159 ms

64 bytes from 144.228.202.1: icmp_seq=50 ttl=254 time=848.810 ms
64 bytes from 144.228.202.1: icmp_seq=51 ttl=254 time=828.579 ms
64 bytes from 144.228.202.1: icmp_seq=52 ttl=254 time=753.865 ms
64 bytes from 144.228.202.1: icmp_seq=53 ttl=254 time=778.202 ms
64 bytes from 144.228.202.1: icmp_seq=54 ttl=254 time=29.913 ms
64 bytes from 144.228.202.1: icmp_seq=55 ttl=254 time=220.931 ms
64 bytes from 144.228.202.1: icmp_seq=56 ttl=254 time=173.661 ms
64 bytes from 144.228.202.1: icmp_seq=57 ttl=254 time=144.990 ms
64 bytes from 144.228.202.1: icmp_seq=58 ttl=254 time=28.520 ms

$

Articole asemanatoare:

Bogdan Turcanu

Bogdan Turcanu

One thought on “Utilitarul ping

  1. te rog sa ma lamuresti si pe mine ,am ttl64 indiferent pe ce dau ping,o valoare mai mare a ttl m-ar ajuta mai mult?
    eu am ping bun si constant,dar cand ma joc in retea pr anumite servere am lag si mi se intimpla numai mie sau celor care au acelasi net ca mine
    .multumesc anticipat

Lasă un răspuns

Adresa ta de email nu va fi publicată. Câmpurile obligatorii sunt marcate cu *

Acest site folosește Akismet pentru a reduce spamul. Află cum sunt procesate datele comentariilor tale.