Program służy do testowania trasy pakietów IP w sieciach IP. Jest on dostępny zarówno w systemach Linux/Unixh jak i Microsoft Windows (w tym systemie nosi nazwę: tracert). W systemach Linux/Unix mamy dostępne narzędzie MTR, które łączy w sobie funkcjonalności programów traceroute oraz ping.
Działanie programu traceroute/tracert jest oparte na protokole komunikacyjnym UDP oraz ICMP. Najpierw jest wysyłany pakiet z polem TTL (Time To Live) ustawionym na 1. Następnie podczas przechodzenia przez kolejne routery na trasie wartość parametru TTL jest każdorazowo zmniejszana o 1. W momencie gdy pole TTL ma wartość 0 - pakiet jest odrzucany przez router, oraz router ten wysyła komunikat ICMP "Time Exceeded. Tym sposobem komputer z którego wykonujemy polecenie traceroute uzyskuje adres IP pierwszego routera na trasie. W kolejnym pakiecie pole TTL ustawiane jest na wartość 2. I tak jak poprzednio przechodząc przez kolejne routery na trasie wartość ta jest każdorazowo zmniejszana o 1. Gdy wartość TTL osiągnie 0 ostatni router wysyła komunikat "Time Exceeded" do komputera źródłowego. Tym sposobem uzyskaliśmy adres IP kolejnego routera na trasie. Kolejne adresy IP routerów na trasie są uzyskiwane w sposób analogiczny do tego powyżej. Najzwyczajniej wartość pola TTL jest zwiększana o 1 i jest wysyłany pakiet. Gdy pakiet dotrze do hosta docelowego, zostaje odesłany do komputera źródłowego komunikat ICMP Port unreachable - gdy komputer źródłowy jest systemem Linux/Unix (Linuxowe/Unixowe implementacje tracerout wysyłają pakiety UDP z losowym numerem portu powyżej 30000 - z reguły na tak wysyokich portach nie działają żadne usługi i stąd ten komunikat). W systemach z rodziny Microsoft Windows zasada działania programu tracert jest taka jak powyżej z tą różnicą iż w tych systemach wysyłane pakiety to nie datagramy UDP, lecz komunikaty ICMP Echo Request. Dzięki temu zawsze zostaje odesłana odpowiedź ICMP Echo Reply i pomaga go ominąć część firewalli.
W przypadku braku odpowiedzi, widzimy znak gwiazdki "*", może to mieć kilka przyczyn: np. przeciążenie sieci, blokada na firewallu. Dodatkowo jeśli kolejny router na trasie pakietu jest skonfigurowany tak że nie zmniejsza wartości pola TTL (tak, zdarza się taka konfiguracja) to nie będzie on uwidoczniony przez traceroute. Jeśli pakiet część tracy pokona w tunelu lub sieci MPLS to też nie zobaczymy takich routerów.