看起来几乎是神奇的。 traceroute命令为了将整个路径映射到Internet上的某个其他节点而执行的是什么?
答案 0 :(得分:27)
traceroute将TTL(Time To LIve)字段设置为1,并为每一跳递增它。接收消息的路由器递减该值,当它达到0时,它们回复TTL已达到零的消息。通过此回复,客户知道谁介于两者之间。迭代地执行此操作直到您的目的地并且您获得了(至少其中一个)路线
答案 1 :(得分:23)
Traceroute传输具有小TTL(生存时间)值的数据包。 TTL是一个IP头字段,用于防止数据包进入无限循环。当处理数据包的路由器从数据包的TTL中减去一个。数据包到期,当TTL达到零时丢弃。
当发生这种情况时,Traceroute会将ICMP Time Exceeded消息(RFC 792)发送回发件人。通过使用小的TTL值,数据包将很快到期,因此traceroute会导致数据包路径上的所有路由器生成识别路由器的ICMP消息。
例如,TTL = 1应该从第一个路由器产生消息,TTL = 2从路径中的第二个路由器生成消息,依此类推......