traceroute如何工作以获取每个路由器的信息?

时间:2014-07-19 14:07:33

标签: network-protocols traceroute

关于traceroute如何使用TTL有很多很好的解释。

我不明白的是traceroute如何获取每一步的路由器信息。

例如,假设有一个简单的网络,以及从Computer A(CA)Computer B(CB)的跟踪路由:

COMPUTER A(CA) ----  ROUTER A(RA)  ---- ROUTER B(RB) ---- COMPUTER B(CB)

当TTL在RB到期时,CA如何了解RB的IP地址?

在每一跳上,路由器是否更改了数据报的源/目标地址?

1 个答案:

答案 0 :(得分:1)

RB将向IC发回ICMP时间过期消息,该消息将包含RB的IP地址。虽然它不是您的问题的一部分,但CA通常可以使用反向DNS来查找RB的名称。

"时间已到期"真的意味着IP"啤酒花的数量"已超出出站ICMP消息中的设置。

已编辑添加: CA的消息的源地址始终为CA,目标地址始终为CB。除非使用traceroute之类的东西发现它们,否则CA不会知道路由器的地址。

CA首先发送ICMP echo(ping)数据报,其目标地址为CB,TTL为1。 RA接收该数据报,递减TTL,该TTL变为零。 RA向CA发送ICMP时间过期消息;该消息的一部分是RA的IP地址,因此CA现在知道第一跳的地址。

然后,CA发送另一个ping,仍然发送给CB,但TTL为2。 RA将递减TTL并将其发送到RB。 RB递减,找到零,并将ICMP时间过期发送回CA,以便CA找到第二跳的地址。

然后,CA将发送第三个,第四个等数据报,全部发送给CB,每个都将TTL增加1,直到CB回答。