different between tracert(windows) and traceroute(linux)

I'm tracing some server between tracert(Windows) and traceroute(linux) in the same network.
But the output is different.
tracert can trace the target server.
But traceroute can't. The traceroute output is below(Some asterisk omit).

traceroute to xxx.com (112.125.57.195), 64 hops max, 52 byte packets
 1  192.168.1.1 (192.168.1.1)  1.347 ms  0.729 ms  1.083 ms
 2  113.109.124.1 (113.109.124.1)  6.519 ms  5.903 ms  6.368 ms
 3  183.56.38.137 (183.56.38.137)  6.094 ms  37.891 ms  5.314 ms
 4  58.61.243.129 (58.61.243.129)  7.002 ms  8.967 ms  7.673 ms
 5  61.144.3.22 (61.144.3.22)  6.169 ms  6.147 ms  5.359 ms
 6  202.97.34.117 (202.97.34.117)  40.194 ms  532.342 ms  536.089 ms
 7  220.181.16.54 (220.181.16.54)  578.522 ms  586.950 ms  627.117 ms
 8  220.181.70.150 (220.181.70.150)  607.408 ms  681.635 ms  671.447 ms
 9  182.92.255.228 (182.92.255.228)  760.188 ms  766.492 ms  399.930 ms
10  * * *
11  * * *

That can't not trace the target server. And all the output is asterisk.


The difference between tracert(windows) and traceroute(linux) is that:

tracert(windows) will only use ICMP echo requests.

traceroute(linux) [and somewhat dependent on linux distro] default to UDP echo requests.

Both solutions are very old, and surprisingly have worked for a very long time, because for a large part of the internet's history many portions of the internet would still pass-along both types of traffic without filtering it. However, as time has progressed more & more core traffic routers have began filtering these "echo" requests. (For more information on echo requests, start here: https://en.wikipedia.org/wiki/Echo_Protocol)

An alternative to either ICMP or UDP echo requests is used by TCP Traceroute, in that it uses TCP SYN packets which are better able to traverse modern firewalls.

TCP Traceroute on Windows And Linux
http://simulatedsimian.github.io/tracetcp.html
https://github.com/SimulatedSimian/tracetcp/releases

and for a writeup on how it works:

https://support.logicboxes.com/helpdesk/index.php?/Knowledgebase/Article/View/11/37/using-tcp-traceroute-on-windows-and-linux

And here's a copy of one of the simple/typical usage examples:

C:\tracetcp>tracetcp www.redhat.com:443 -h 3

Tracing route to 184.85.48.112 [a184-85-48-112.deploy.akamaitechnologies.com] on
port 443
Over a maximum of 30 hops.
3 32 ms 50 ms 56 ms 172.20.16.65
4 34 ms 14 ms 33 ms 172.26.16.1
5 503 ms 14 ms 68 ms 172.20.7.34
6 43 ms 170 ms 25 ms 203.117.35.9
7 28 ms 86 ms 26 ms 203.117.34.2
8 216 ms 168 ms 99 ms 203.117.34.14
9 * * * Request timed out.
10 Destination Reached in 211 ms. Connection established to 184.85.48.112
Trace Complete.

You MUST install the winpcap library for this version to work. tracetcp has been tested with version 3.* and 4.* of this library. (Because WinXP SP2 removed raw sockets.) But if you're a network guy, you probably already have winpcap & wireshark already installed anyway.


Most flavours of traceroute in *NIX (operating systems) default to sending UDP packets (though there is usually an option to change this ), Windows will default to using ICMP echo requests .