traceroute

(Reindirizzamento da Tracert)

In informatica il traceroute è un algoritmo con lo scopo di ricavare il percorso seguito dai pacchetti sulle reti informatiche, ovvero l'indirizzo IP di ogni router attraversato per raggiungere il destinatario.[1][2] Con il termine traceroute si è soliti indicare anche l'output del programma che lo implementa, ovvero il tracciato delle rotte seguite dai pacchetti.

Output del comando traceroute su un sistema FreeBSD

Descrizione

modifica

Il campo TTL

modifica

Questa applicazione sfrutta una particolare caratteristica del protocollo IP, ovvero il campo del datagramma TTL (time to live), anche detto (hop limit) cioè limite di salti. Questo campo specifica il numero degli apparati di rete che il pacchetto potrà attraversare prima di essere dichiarato scaduto. [3]

Il funzionamento di questo campo è semplice: ogni router che riceve il pacchetto, prima di inviarlo nuovamente, diminuisce il campo di un'unità. Se si accorge che il campo ha assunto il valore 0, invia al mittente del pacchetto un messaggio di errore ICMP specificando l'indirizzo del router che l'ha generato.

Funzionamento

modifica

Un'applicazione traceroute, quindi, invia un pacchetto al destinatario di cui si vuole ricavare il percorso di traceroute con il campo TTL impostato ad 1. Il primo router che lo riceverà, constatando che il campo TTL ha raggiunto lo 0, invierà un errore al mittente (ICMP Time Exceeded). L'applicazione memorizzerà l'indirizzo IP del primo router, quindi invierà un nuovo pacchetto con TTL impostato a 2. L'operazione verrà ripetuta finché il pacchetto non sarà arrivato al destinatario, che invierà un ICMP Echo Reply.

Alla fine l'applicazione avrà ottenuto la lista degli indirizzi IP dei router su cui hanno transitato i pacchetti.

Calcolando anche il tempo trascorso tra l'invio di un pacchetto e l'arrivo del corrispondente messaggio di errore è possibile anche verificare la velocità di risposta dei router.

Il primo indirizzo IP fornito è quello del nodo client, che invia il pacchetto di prova. Questo risulta utile ad esempio nelle connessioni ad un proxy server, per visualizzare il proprio IP.

Problemi

modifica
  1. Il principale problema del traceroute è che spesso i pacchetti possono seguire più di un percorso. In questo modo l'intera operazione perde di affidabilità, in quanto gli indirizzi IP ricavati si riferiscono a due (o più) percorsi differenti e non c'è modo di sapere in corrispondenza di quale router i percorsi si sono separati.
  2. Se i pacchetti e i rispettivi messaggi di errore seguono percorsi differenti, il calcolo del tempo di risposta dei router non è più affidabile.
  3. Poiché l'indirizzo IP restituito dai router corrisponde a quello della sua interfaccia in ingresso, talvolta questo indirizzo non è quello effettivo su cui transita il pacchetto.

Implementazioni

modifica
  • Nei sistemi Microsoft Windows è disponibile il programma tracert.[4]
  • In molte distribuzioni GNU/Linux è disponibile il programma traceroute[5] ed altri come tracepath[6] ed mtr.[7]
  • Nei sistemi MacOS è disponibile il programma traceroute.[8]
  • Su AS400, esiste il comando TRCTCPRTE[senza fonte]
  1. ^ (EN) How Traceroute Works, su inetdaemon.com. URL consultato il 14 maggio 2012.
  2. ^ (EN) Understanding the Ping and Traceroute Commands, su cisco.com. URL consultato il 14 maggio 2012.
  3. ^ (EN) Jon Postel, RFC 792: Internet Control Message Protocol, Internet Engineering Task Force, Settembre 1981.
  4. ^ (EN) tracert, su Windows XP Command-line reference. URL consultato il 14 maggio 2012.
  5. ^ (EN) traceroute, su Linux man pages. URL consultato il 14 maggio 2012.
  6. ^ (EN) tracepath, su Linux man pages. URL consultato il 6 agosto 2023.
  7. ^ (EN) mtr, su Linux man pages. URL consultato il 6 agosto 2023.
  8. ^ (EN) traceroute, su MacOS Man Pages. URL consultato il 14 maggio 2012.

Voci correlate

modifica

Altri progetti

modifica

Collegamenti esterni

modifica
  Portale Informatica: accedi alle voci di Wikipedia che trattano di Informatica