当我ping
使用服务器时,我可能会得到两种结果:
该ping
命令如何知道主机是否已关闭?在这两种情况下,主机都没有对 ping 数据包发送任何响应,那么如何ping
区分呢?
Ove*_*ind 24
响应之间的差异实际上不是由 ICMP 本身决定的,而是间接决定的。
ICMP 可以区分以下各项:
0 = net unreachable;
1 = host unreachable;
2 = protocol unreachable;
3 = port unreachable;
4 = fragmentation needed and DF set;
5 = source route failed.
Run Code Online (Sandbox Code Playgroud)
但它对其他网络资源也是如此。代码 0、1、4 和 5 可以从网关接收。代码 2 和 3 可以从主机接收。
如果根据网关路由表中的信息,目标网络不可达(例如,到网络的距离无穷大),网关可以向数据报的互联网源主机发送目标不可达消息。此外,在某些网络中,网关可能能够确定 Internet 目标主机是否无法访问。当目标主机不可达时,这些网络中的网关可以将目标不可达消息发送到源主机,因此实际上不是由 ICMP 进行确定。
如果在目的主机中,IP 模块由于指示的协议模块或进程端口不活动而无法传递数据报,则目的主机可以向源主机发送“目的不可达”消息。
最后,如果数据报必须被分片才能由网关转发,但“不要分片”标志打开,网关将丢弃该数据报并返回“目的地不可达”消息。
现在来区分两种不同的情况:请求超时意味着在设置的时间内没有收到回声回复消息。这可能是由于许多不同的原因造成的:ARP 请求失败、网络拥塞、数据包过滤、路由错误,甚至是无声丢弃。
当您收到来自 [IP 地址] 的回复:“目标主机无法访问”时,问题发生在远程路由器上/之后,其地址由 [IP 地址] 指示。所以它是一个路由器,告诉你它和目的地址之间有问题。