Trace with ICMP, UDP and TCP
Different trace types with different results. Normally a ICMP trace will
do the job. But it is possible that ICMP does not show the real picture: routers
can use different priorities for 'normal' and ICMP traffic. So a UDP trace
reveals a more realistic picture.
But sometimes even a UDP trace does not work. Let us hunt a chicken:
commandline trace:
Target not reachable. Some sort of firewall. No surprise, 3d Traceroute
shows the same results with its ICMP trace (not shown here). Let us
try a UDP trace:
No difference. Hop 17 is the end. And it is not 64.236.16.84 as expected.
Ok, now let us do a TCP trace:
Wow, 4 more computers. Actually we seem to see 'internal' routers, firewalls
and some sort of load balancing system (?) cnn uses. Let us look up the ASN
for hop 21:
route: 64.236.16.0/20
descr: CNN
origin: AS5662
mnt-by: MAINT-AS-AOL
changed: toan@aol.net 20020314
source: AOLTW
Looks plausible...
(Remark: resolving www.cnn.com might show different IP numbers. It
depends on location, daytime and whatever.)
Different pathes for different Types of Service
Yes, it can happen: Mostly due to load balancing sometimes packets
with different type-of-service are routed differently. Here is an
example:
So only a UDP/TCP-trace shows the real picture.
(Type of service in this case UDP/TCP packets, not by TOS-flag.)
So how to trace? ICMP, UDP or TCP?
Use ICMP or UDP. ICMP gives a good picture most of the time. Perhaps
by default use UDP, it might give a better picture but has different
drawbacks.
Only use TCP in case neither ICMP nor UDP work. TCP has to use some
protocol tricks that bind resources on your and the traced side. So
it does generate a little higher load and might not be considered
'friendly' (if you meet a yellowbelly admin).
Problems
ICMP/Ping: it is the 'default' way the
Internet Protocolls suggest to do a trace. Fails to work if routers
or servers don't answer these type of message.
UDP: Fails finding the endpoint of a trace
in case of a listener is accepting our trace packet (at the endpoint).
This is avoided by using random ports and sending packets to different
ports every time. So it should happen only rare.
TCP: Fails if an intrusion detection system
sees our attempt and blocks it.
Limitation
UDP and TCP tracing needs raw sockets.