| Traceroute Command for Linux | Cerca per titolo, autore, parola chiave | ||||||||
|
Traceroute Command for Linux By Juergen Haas. Il comando traceroute, in Linux, restituisce il percorso utilizzato da un pacchetto di dati per andare dal computer mittente al computer di destinazione. Il percorso è fatto di HOP (router o server) intermedi, attraversati da ogni singolo pacchetto di dati. Verificare il percorso completo aiuta ad identificare gli HOP che rallentano il viaggio. Il solo parametro che dovete indicare al comando traceroute è il nome del computer o l'indirizzo IP del computer di destinazione. Traceroute utilizza il campo TTL (time to live), presente nei pacchetti di dati IP, per sollecitare una risposta ICMP TIME_EXCEEDED da ciascuno dei gateway attraversati. Il campo Time To Live ( TTL ), di 8 bit, esprime il numero massimo di router che il datagramma IP potrà attraversare, prima di essere considerato scaduto. Ogni router che il datagramma attraverserà diminuirà questo valore di 1. Quando il campo TTL sarà a zero, il datagramma verrà distrutto: in questo caso, il router intermedio invia, al computer mittente, un messaggio di errore, vale a dire un messaggio ICMP TIME_EXCEEDED. Il campo IP time-to-live (TTL), chiamato hop limit nella versione 6 di IP, viene utilizzato, da traceroute, per conoscere i router intermedi attraversati, dai dati, per arrivare al computer di destinazione. Il computer di origine (mittente) invia il primo pacchetto traceroute con il valore del TTL impostato a 1. Il primo router intermedio riceve il pacchetto di dati, diminuisce il valore TTL di uno e scarta il pacchetto di dati, poichè ha il valore TTL a zero, inviando al router mittente un messaggio ICMP TIME_EXCEEDED. Il pacchetto successivo inviato dal computer mittente avrà un valore TTL impostato a due, in modo da permettere al primo router intermedio di far proseguire il suo viaggio verso il secondo router intermedio, il quale, a sua volta, riceverà un TTL impostato a uno, lo decrementerà di uno e scarterà il pacchetto di dati, inviando, anch'esso, un messaggio di errore ICMP TIME_EXCEEDED al computer mittente. Procedendo in questo modo, traceroute utilizza i messaggi ICMP TIME_EXCEEDED per ricostruire una lista di router attraversati dai pacchetti di dati. Alla fine, l'ultimo pacchetto di dati inviato da traceroute raggiungerà il computer di destinazione, ricevendo un messaggio ICMP Destination Unreachable, nel caso si trattasse di un pacchetto di dati UDP, oppure un messaggio ICMP Echo Reply, nel caso si trattasse di un pacchetto di dati ICMP Echo. ICMP ( Internet Control Message Protocol ) è il protocollo, introdotto con la RFC 792, che ha il compito di trasportare i messaggi di sistema ( di errore, di feedback e di test ). I messaggi ICMP utilizzano gli stessi header IP di base ed occupano, di un pacchetto IP, l'area destinata ai dati. Il primo byte ( ottetto ) dell'area dei dati di un datagramma è il campo ICMP " type ", il cui valore determina il formato dei rimanenti dati. ICMP definisce 256 Type differenti. Naturalmente, non tutti i Type sono stati definiti. Un Type offre una descrizione generica del tipo di messaggio trasportato, mentre il campo ICMP successivo, Code, ne offre una descrizione più dettagliata. Anche il campo Code occupa 8 bit. I type ( ed il loro code) che interessano noi, di cui abbiamo appena parlato, sono:
00 Echo reply
03 Destination Unreachable
00 Net Unreachable
01 Host Unreachable
02 Protocol Unreachable
03 Port Unreachable
04 Fragmentation Needed & Don't Fragment Flag Set
05 Source Route Failed
06 Destination Network Unknown
07 Destination Host Unknown
08 Source Route Isolated
09 Network Administratively Prohibited
10 Host Administratively Prohibited
11 Network Unreachable for TOS
12 Host Unreachable for TOS
13 Communication Administratively Prohibited
08 Echo
11 Time Exceeded
00 Time to Live exceeded in transit
01 Fragment Reassembly Time Exceeded
Nei sistemi operativi Unix-like, traceroute invia, di default, una sequenza di pacchetti User Datagram Protocol (UDP), con porta di destinazione compresa tra 33434 a 33534 (invalid port number: porte non corrispondenti, solitamente, ad alcun servizio: questo è il motivo del messaggio di errore: Destination Unreachable). Per evitare che il computer di destinazione venga costretto ad elaborare un'eccessiva quantità di pacchetti UDP, infatti, la porta di destinazione viene impostata ad un valore difficilmente utilizzato dal sistema di destinazione. Tuttavia, nessuno sa cosa accadrebbe se una qualche applicazione fosse in ascolto proprio su quella porta. L'invio di pacchetti di dati UDP, che è il metodo tradizionale dei sistemi Unix-like, non richiede i privilegi di root. In Windows, il programma tracert (corrispondente a traceroute) invia pacchetti di dati di tipo ICMP Echo Request. Quando traceroute viene eseguito, invia, di default, tre pacchetti di dati (chiamati probe) per ciascun livello TTL impostato e poi stampa una riga per TTL, contenente l'indirizzo del gateway e il tempo di risposta, espresso in millisecondi, per ciascun pacchetto. traceroute allspice.lcs.mit.edu. 1 helios.ee.lbl.gov (128.3.112.1) 0 ms 0 ms 0 ms 2 lilac-dmc.Berkeley.EDU (128.32.216.1) 19 ms 19 ms 19 ms ......... Se la risposta ad un pacchetto arriva da un gateway (router) differente, viene stampato l'indirizzo del gateway che ha inviato la risposta. Se non arriva alcuna risposta entro cinque secondi, viene stampato un asterisco per quel pacchetto (probe). 14 * * * È bene ricordare che i protocolli Internet non richiedono che tutti i pacchetti di dati seguano lo stesso percorso, per arrivare al computer di destinazione. Quindi, i router presenti nell'output di traceroute potrebbero esser router attraversati da altri pacchetti di dati.
|
|||||||||
| Traceroute Command for Linux | Disclaimer: questo è un link a contenuti ospitati su server esterni. |