2012-04-25 16 views
13

Secondo la Stevens (TCP/IP Illustrated) il programma traceroute invia i pacchetti UDP per l'host di destinazione con un TTL incrementale (1, 2, 3, ecc) per ottenere il luppolo informazioni intermedia dal ICMP TTL SCADUTO messaggi.
Il "destinazione raggiunta" condizione è un messaggio ICMP Porta irraggiungibile, perché traceroute affronta una porta casuale con un numero elevato (vale a dire: improbabile che qualcuno è in ascolto lì)
Quindi la mia domanda è: c'è un tecnico ragione (inconvenienti, RFC, ecc.) per utilizzare i pacchetti UDP anziché utilizzare, ad esempio, messaggi di richiesta echo ICMP (con aumento TTL) e utilizzare la risposta echo risposta come condizione finale?
Capisco che la risposta echo ICMP potrebbe essere filtrato da firewall o altri dispositivi nette in mezzo, ma credo che questo possa accadere anche a pacchetti UDP;)
Perché traceroute invia pacchetti UDP e non quelli ICMP?

Molte grazie
Sergio

risposta

13

In realtà è il "vecchio" metodo di fare traceroutes. Immagino che la motivazione principale fosse che l'invio di semplici pacchetti UDP non richiede privilegi speciali, come l'invio di pacchetti ICMP (socket grezzi o equivalenti). Ecco perché, ad es. ping di solito è impostato su root, che è un grande rischio per la sicurezza.

Al giorno d'oggi traceroute supporta anche i pacchetti di probe ICMP e TCP, quindi è più probabile che si possano intrufolare tra i firewall, che sono più probabili che non implementati senza considerazione. Questo significa anche che traceroute è probabilmente anche setuid root sul tuo sistema. Vedere la relativa pagina man, in particolare la parte relativa ai metodi disponibili: http://linux.die.net/man/8/traceroute