traceroute 输出中无响应 (*) 和无法访问 (!H) 主机之间的区别

网络工程 跟踪路由
2021-07-25 14:37:02

当运行 traceroutes 时,一些跃点返回 * 据我所知,这意味着主机没有响应 ICMP 回声请求,而其他一些跃点(主要是最后一个)返回!H,根据手册页,这意味着主机无法访问. 遥不可及什么意思?没有到那个地址的已知路线?

2个回答

YLearn 的答案是正确的,但了解更多细节很重要。

  • * 表示您的机器没有收到任何响应。
  • !H表示您的机器从traceroute输出中指示的主机收到 ICMP 消息“目标主机无法访问”
  • 很少traceroute也可以指示其他无法访问的消息,例如!N!P(网络或协议)等。

当一台机器无法将 IP 数据包发送到网络时,它通常会发送“目标主机不可达”。这可能发生在:

  • 没有到达目的地的路线。
  • 下一跳 IP 地址或最终 IP 地址无法解析为 L2 地址(该 IP 地址没有 ARP 回复)。

正如 YLearn 所写,路由器可以配置为不发送 ICMP 消息,但您也可以在请求被 ACL 或防火墙策略静默丢弃时获取*而不是!H在安全策略中,静默丢弃是一种正常做法。由安全策略引起的丢弃取决于 发送的消息类型traceroutetraceroute默认情况下,传统的 Unix将 UDP 数据包发送到“不寻常”的端口,例如 33434,但它也可以使用其他方法。Windowstracert发送 ICMP 回显请求。

简单的区别在于,对于无法访问的主机,最后一跳路由器返回ICMP 目标无法访问响应。

大多数路由器将硬件处理 ACL 或速率限制,但生成 ICMP 响应需要 CPU 资源,因此通常不生成它们。