我可以追踪到一个IP地址,但不能ping它


19

在Windows上,如果我追踪到Google,则会得到以下信息:

C:\Users\Dave>tracert -d -w 100 www.google.com

Tracing route to www.google.com [216.58.220.100]
over a maximum of 30 hops:

  1    <1 ms    <1 ms    <1 ms  192.168.1.1
  2    17 ms     *       16 ms  [redacted]
  3    17 ms    16 ms    17 ms  [redacted]
  4    34 ms    34 ms    34 ms  150.101.33.18
  5    35 ms    43 ms    33 ms  72.14.221.174
  6    33 ms    33 ms    33 ms  66.249.95.234
  7    31 ms    31 ms    31 ms  209.85.142.11
  8    33 ms    33 ms    38 ms  216.58.220.100

Trace complete.

现在,如果我对66.249.95.234的倒数第三个IP地址执行ping操作,则会收到此信息...

C:\Users\Dave>ping 66.249.95.234

Pinging 66.249.95.234 with 32 bytes of data:
Request timed out.
Request timed out.
Request timed out.
Request timed out.

Ping statistics for 66.249.95.234:
    Packets: Sent = 4, Received = 0, Lost = 4 (100% loss),

tracert内部的“ ping”与实际ping有何不同?它们有何不同?我需要做什么才能使ping像Tracert一样工作?


3
可能仅仅是ICMP ECHO被阻止了。
Burhan Khalid 2015年

Answers:


27

这都与tracert的工作方式有关。Ping是从A点到B点的直线ICMP,它通过路由规则遍历网络。即使使用ICMP,Tracert的工作方式也大不相同。

Tracert的工作方式是针对最终跳,但限制TTL并等待超过时间的消息,然后将其增加1以进行下一次迭代。因此,它获得的响应不是主机对ICMP回声请求的ICMP回声应答,而是来自该主机的超时消息-因此,即使它正在使用ICMP,它也以非常不同的方式使用它。

您可以在此处阅读有关它的更多详细信息。


12
到最终点为什么坪超时添加:显然,第三最后3主机被配置为工作作为路由器的流量通过它(这包括发送ICMP TTL超过故障的控制消息),但块的流量它,具体地,涉及不回复到ICMP ECHO REQ。顺便说一句,traceroute客户端可以发送任何以最终跃点为目的地的消息-它可以是ICMP ECHO REQ,但也可以是某些TCP SYN(可能会到达目标jhost时触发其他ICMP消息)。实际上,不同操作系统之间的实现有所不同,然后tracepath……
Hagen von Eitzen 2015年

@HagenvonEitzen可以自己做出一个不错的答案(最好的IMO!)
与Monica进行的Lightness比赛

3
同样值得注意的是,许多“ tracert”实现甚至都没有发送ICMP数据包。至少traceroute在大多数Linux中都是这样,它发送UDP数据报,尽管我不确定Windows版本会做什么。中间跃点应该为任何类型的数据包发送ICMP TTL EXCEEDED,而不仅仅是ICMP。
Digital Trauma 2015年

1
@DigitalTrauma Wireshark说tracert在Windows 7上发送ICMP Echo请求。
鲍勃

4

您的两个命令首先要发送具有不同目标IP地址的数据包。这意味着他们可能采取不同的路线。

当您66.249.95.234在到的路由上看到时216.58.220.100,您可能会假设具有目标地址的数据包在66.249.95.234到达该点之前将使用相同的路由。但是,这不是一个有效的假设。

路线比66.249.95.234到的更长216.58.220.100。有时甚至发生没有路由可以将您的数据包带到该中间路由器的情况,但是如果是这样的话,那将不是一个设计合理的网络。

我不知道您使用的tracertping命令是否使用相同的协议。大多数ping实现使用ICMP回显请求数据包。但是,存在跟踪路由实现,支持多种协议,包括ICMP回显请求,TCP SYN和UDP数据包。如果两者碰巧使用了不同的协议,则可能是导致看到不同结果的一个因素。

最终,即使所有数据包都到达了66.249.95.23466.249.95.234根据其是否需要,行为的表现也可能大相径庭:

  • 转发数据包
  • 在发往自身的数据包上产生ICMP错误
  • 在发给其他人的数据包上产生ICMP错误

选择仅在三种情况中的一种情况下静默丢弃数据包显然会破坏许多网络诊断工具,但是这并不会阻止某些系统管理员这样做。


0

随着网络安全性的不断提高,许多人现在要做的一件简单的事情就是基本禁用ICMP协议的各个方面。这样可以防止响应跟踪路由并从跃点返回FQDN。有时,管理员将事情锁定在很紧的位置,甚至无法ping通。这是所涉及系统管理员的决定。

系统还可能处理大量的网络负载,与实际数据相比,ICMP的优先级通常很低。


5
这并不能真正回答问题。问题是,如果traceroute和ping都使用ICMP,为什么ping失败而traceroute成功。
MaQleod
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.