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