traceroute經過udp和icmp兩個協議的共同做用之下,實現線路探測功能。基本過程是:cdn
- traceroute程序設置IP頭部的ttl初始值爲1,發送UDP報文
- UDP報文到達路由器R1,R1將TTL-1,TTL變爲0,內核丟棄該數據包,並響應ICMP Time to live exceeded消息
- traceroute收到ICMP ttl exceeded消息以後,將IP頭部ttl值設爲2,再次發送UDP報文
- 若是沒到達最終的目的IP所在的機器,重複2,3,依次累加ttl
- 若是到達最終目的地,此時回覆ICMP Destination Unreachable消息。trace過程結束
我在Mac上使用traceroute命令會重複針對每一個ttl會重複三次。blog