traceroute 命令详细信息

traceroute 命令详细信息

正如我在维基百科上看到的,traceroute 实用程序使用 ICMP 协议以三组为一组发送一系列数据包,并增加 TTL 值以识别网络路由器。它还说,互联网协议不保证所有数据包都采用相同的路由。

我有三个问题:

1-为什么每个路由器都要发送三个数据包?

2-如果这三个具有相同 TTL 值的数据包通过不同的路由方式传输,会发生什么情况?

3-当这些路线可以根据不同的数据包组的时间而改变时,结果怎么会有用呢?!

提前致谢

答案1

  1. 主要的好处是确保即使出现数据包丢失也能收到响应。其他好处包括获得更多往返时间数据点,以及查看不同的数据包是否采用不同的路由。

  2. 它将打印每个数据包的网关。

  3. 运行跟踪路由的目的是查看数据包去往何处,如果您的跟踪路由显示不断变化的路由,则其余数据包的路由也一样。在我看来,了解这一点与了解路由本质上是静态的一样有用。

    也就是说,仅仅因为路由没有被阻止改变,并不意味着它们会改变。大多数情况下,当您运行 traceroute 时,您将获得相同的路由。路由改变大多发生在瞬态条件下,例如当给定路由器太忙时。

答案2

  • 它通常使用 UDP 甚至 TCP(tcptraceroute 通常更有用,或者在某些实现上使用 -t 选项)来发送数据包 - 但在所有情况下都依赖于 ICMP TTL 超出消息。

  • Traceroute 是 tcp/ip 的一个巧妙的破解方法 - 而不是发现路由的内置函数。这是一个巧妙的后续想法。

  • 您可以指定发送不同数量的数据包 - 不一定是三个。

  • 正如 Kowh 所说 - 路由可以改变,但不一定经常改变。traceorute 给出误导性结果的原因有很多 - 从 ICMP 优先级较低,到被完全阻止 - 重要的是要了解它的工作原理以及它告诉您什么和不告诉您什么。

相关内容