2012-04-25 22 views
13

De acuerdo con el Stevens (TCP/IP Illustrated) el programa traceroute envía paquetes UDP al host de destino con un TTL incrementales (1, 2, 3, etc.) para obtener la información saltos intermedios de la ICMP TTL expirado mensajes.
El "destino alcanzó" condición es un mensaje de ICMP de puerto inalcanzable, porque traceroute se dirige a un puerto aleatorio con un número alto (es decir: poco probable que alguien está escuchando allí)
Así que mi pregunta es: ¿hay un técnico razón (inconvenientes, RFCs, etc.) para usar paquetes UDP en lugar de usar, por ejemplo, ICMP solicitud de eco mensajes (con TTL creciente) y utilizar la respuesta de eco respuesta como la condición final?
entiendo que la respuesta de eco ICMP puede ser filtrada por los cortafuegos u otros dispositivos de red en el centro, pero supongo que esto puede ocurrir también a los paquetes UDP;)¿Por qué traceroute envía paquetes UDP y no ICMP?

Muchas Gracias
Sergio

Respuesta

13

En realidad el "viejo" método de hacer traceroutes. Supongo que la principal motivación fue que el envío de paquetes UDP simples no requiere privilegios especiales, ya que el envío de paquetes ICMP hace (sockets sin procesar o el equivalente). Es por eso, por ejemplo ping es usualmente setuid para rootear, lo cual es un gran riesgo para la seguridad.

Actualmente, traceroute admite paquetes de sonda ICMP y TCP, por lo que es más probable que pueda escabullirse a través de cortafuegos, que es más probable que no se implementen sin consideración. Esto también significa que es probable que traceroute también sea root setuid en su sistema. Consulte su página man, especialmente la parte sobre métodos disponibles: http://linux.die.net/man/8/traceroute

Cuestiones relacionadas