我是计算机网络新手,正在尝试通过本教程了解跟踪路由:
http://community.spiceworks.com/how_to/show/47298-how-traceroute-works
这些是带有 UDP 传输数据包的 IP 数据包,其 TTL(生存时间)设置为 1。它们被发送到一个主机的原因是,一旦它们到达下一跳 IP,数据包将过期,并向发送它们的主机发送回“超时”消息。
因此,如果我理解正确的话,当 TTL=1 时,我的家庭路由器(即第一跳)会将其减少到 0,并将其发送到第二个路由器(即我的 isps 网关),它将生成第一个超出时间消息,这就是我知道它是路由上的一个跳跃的方式。
我不明白的是,当 TTL 为 1 时,如何获取第一个路由器(即我的家用路由器)的地址?
谢谢
答案1
路由上的每个路由器都会将 TTL 减一,如果 TTL 达到零,则会回复 ICMP 超时。本地跟踪路由会提取源地址,并找出哪个路由器丢弃了您的数据包。如果 TTL 设置为 1,则这是您的路由器。
如果您正在准备参加任何类型的计算机网络测试,您应该尝试回答更多与 traceroute 相关的问题。traceroute 将在 IP 之上使用哪些协议?为什么使用这些协议?如果路由器不回复 ICMP 消息会发生什么?如果路由上的防火墙阻止 ICMP 会发生什么?如果在 traceroute 运行时路由发生变化会发生什么?
答案2
第一个路由器收到 TTL 为 1 的数据包,将其减 1,因此现在 TTL 为 0。然后路由器响应超时。每跳都会将 TTL 降低一然后对其采取行动。