James Knott wrote:
>
> Ian Northeast wrote:
>
> > I might ask you the same question. All *nix traceroute implementations
> > that I have seen use UDP by default. Some implementations support
> > sending ICMP packets instead as an extension. Some, for instance the one
> > SuSE ship, do not.
> >
> > What traceroute is this that you have?
> >
> > I am talking about the outgoing packets of course. The response are
> > always ICMP.
> >
>
> How does this work, given that traceroute relies on icmp messages for the
> ttl timeout on udp messages. Icmp messages aren't supposed to be sent,
> when an icmp message fails.
From the "TCP/IP Applications FAQ" -
http://www.private.org.il/mini-tcpip.faq.html and also posted to
comp.protocols.tcp-ip:
The catch is that the original ICMP specifications dictated that ICMP
errors should not be sent as replies to ICMP packets, so old routers
would not respond
correctly to Microsoft's TRACERT. The spec has since been revised so
that ICMP errors are not sent as replies to ICMP error packets only,
which better solves the problem of errors bouncing back and forth across
the net.
Sorry, I don't know the RFC number.
I find ICMP traceroute to be a bit more useful than the traditional
variety. It gets through more firewalls. Even more useful is a program
called tcptraceroute which, as the name suggests, uses TCP. If you're
tracing the path to a machine which you are attempting to connect to
using TCP, it is reasonable to assume that any firewall in the way will
permit TCP packets to the port in question - or at least if it does not
then this is probably the problem you are chasing. Whereas if, for
instance, I run a UDP or ICMP traceroute from my mail exchange to a
remote mail exchange I am having trouble contacting, I may run across a
firewall which prevents the traceroute from working but would not
prevent the actual SMTP connection. If I use tcptraceroute on port 25 I
know that this is not so, and if I hit a firewall it is probably the
problem.
As our mail exchanges run SuSE, I have got three traceroutes installed -
the SuSE one, a BSD based one which has -I for ICMP, and tcptraceroute.
Regards, Ian