我正在使用的 ISP 无法 ping 通 google 或任何其他网站,但只有名称解析有效。
我在某个互联网网站上看到,traceroute 与 ping 相反。这是真的吗?
另外,如果我在网络上阻止 ping(可能在路由器级别/第 4 层),那么 traceroute 是否也会失败?
答案1
Traceroute 的工作原理是明确设置生存时间字段设置为出站数据包的不同值,并观察哪些路由器发送ICMP TTL 已超出返回不同的错误生存时间值。
如果所有被阻止的ICMP 回显请求/答复(“ping”),这本身并不会阻止 traceroute。但是,traceroute 的一个可能实现是专门发送 ICMP Echo Request 数据包。
查看 traceroute 程序的文档,了解它发送了什么。某些实现可以选择发送 UDP 数据包或 ICMP Echo Request 数据包。
答案2
默认情况下,traceroute 发送 UDP 数据包来跟踪到指定主机的路由,而 ping 使用 ICMP。但 traceroute 会处理到目标主机的路由中路由器返回的 ICMP 数据包。
这意味着如果您仅阻止传出的 ICMP 数据包,ping 将不起作用但 traceroute 可以起作用。
但是,如果您阻止传入的 ICMP 数据包,traceroute 将无法从路由中的路由器接收 ICMP 响应,然后它将无法工作。