tracerouteはTTLを1ずつ増やしながらパケットを送信することで、経路情報を取得する。TTLとはパケットの生存期間を表し、ルータを1つ経由することに1ずつ減算される。ルータはTTLが2以上のパケットが届いた場合、TTLの値を1だけ小さくし次のルータへ転送する。TTLが1のパケットが届いた場合、届いたパケットを破棄してICMP time exceededパケットを送信者に返す。
tracerouteはまず、TTLを1にセットしたパケットを送信する。最初のルータに届いた時点でTTLがゼロになり、ICMP time exceededメッセージが戻ってくる。このメッセージの送信元アドレスを見れば、最初のルータのIPアドレスがわかる。次にTTLを2にセットして送信すると、今度は2番目のルータからICMP time exceededが戻ってくる。以降、TTLを3、4・・・と増やしていく事で、順にルータのIPアドレスを得る事ができる。
他方、ICMPを使用した実装は、ICMP Echo requestメッセージのTTL切れに対してICMP time exceededが発生する事を前提としている。RFC1812ではICMPがクエリとエラーに分けられ、クエリに対するエラーの送信は禁止されてはいないが、RFC792では単に「ICMPメッセージについてのICMPは送信しない」とされており、この記述には合致していない。現代ではほとんどの機器で動作するが、RFC792だけを見て実装された機器では期待通りに動かない可能性もある。
$ traceroute ja.wikipedia.org
traceroute to ja.wikipedia.org (208.80.152.2), 30 hops max, 60 byte packets
1 ntt.setup (192.168.1.1) 0.121 ms 0.134 ms 0.159 ms
2 118.23.8.17 (118.23.8.17) 6.037 ms 6.577 ms 7.064 ms
3 118.23.5.137 (118.23.5.137) 4.971 ms 5.388 ms 5.368 ms
4 122.1.164.213 (122.1.164.213) 7.556 ms 9.341 ms 11.167 ms
5 60.37.55.165 (60.37.55.165) 6.195 ms 6.151 ms 6.154 ms
6 60.37.27.89 (60.37.27.89) 6.470 ms 5.355 ms 5.761 ms
7 ae-5.r21.tokyjp01.jp.bb.gin.ntt.net (129.250.11.53) 5.790 ms 7.090 ms 6.670 ms
8 as-2.r21.snjsca04.us.bb.gin.ntt.net (129.250.4.44) 114.218 ms 113.157 ms 113.279 ms
9 equinixexchange.ir1.sanjose-ca.us.xo.net (206.223.116.85) 122.223 ms 122.167 ms 122.115 ms
10 vb2001.rar3.la-ca.us.xo.net (207.88.13.110) 125.873 ms 132.449 ms 125.843 ms
11 vb15.rar3.dallas-tx.us.xo.net (207.88.12.45) 149.345 ms 149.826 ms 149.540 ms
12 207.88.14.42.ptr.us.xo.net (207.88.14.42) 182.000 ms 182.215 ms 181.906 ms
13 w006.z207088246.xo.cnc.net (207.88.246.6) 187.915 ms 187.107 ms 187.082 ms
14 rr.pmtpa.wikimedia.org (208.80.152.2) 186.903 ms 186.520 ms 186.758 ms