关于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地址?
在每一跳上,路由器是否更改了数据报的源/目标地址?
答案 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回答。