2012-04-25 8 views
13

Nach dem Stevens (TCP/IP Illustrated) das trace Programm sendet UDP-Pakete an den Zielhost mit einem inkrementellen TTL (1, 2, 3, usw.), um die Zwischen Hopfen Infos von einem ICMP TTL bekommen ABGELAUFEN Mitteilungen.
Das „Ziel erreicht“ Zustand eine ist ICMP Ziel nicht erreichbar Nachricht, weil trace einen zufälligen Port mit einer hohen Anzahl Adressen (dh: unwahrscheinlich, jemand hört dort)
Also meine Frage ist: Gibt es eine technische Grund (Nachteile, RFCs, etc.) UDP-Pakete zu verwenden, anstatt zum Beispiel ICMP Echo Anfrage Nachrichten (mit steigender TTL) und verwenden Sie die Echoantwort Antwort als Endbedingung?
Ich verstehe, dass die ICMP-Echo-Antwort könnte durch Firewalls oder andere Netzgeräte in der Mitte herausgefiltert werden, aber ich denke, das ist auch für UDP-Pakete passieren kann;)Warum sendet Traceroute UDP-Pakete und keine ICMP-Pakete?

Vielen Dank
Sergio

Antwort

13

Es ist eigentlich die "alte" Methode, Tracerouten zu machen. Ich denke, die Hauptmotivation war, dass das Senden von einfachen UDP-Paketen keine besonderen Privilegien erfordert, wie das Senden von ICMP-Paketen (rohe Sockets oder das Äquivalent). Deshalb z. ping wird normalerweise auf root gesetzt, was sicherheitstechnisch ein großes Risiko darstellt.

Heutzutage unterstützt traceroute auch ICMP- und TCP-Testpakete. Sie können sich also eher durch Firewalls schleichen, die wahrscheinlich ohne Gegenleistung bereitgestellt werden. Dies bedeutet auch, dass traceroute wahrscheinlich auch setuid root auf Ihrem System ist. Siehe seine Manpage, insbesondere den Teil über verfügbare Methoden: http://linux.die.net/man/8/traceroute