[计算机网络]Ping
ping 命令之所以不会收到 ICMP 差错报告报文,是因为 ping 命令本身使用的是 ICMP Echo 请求(ICMP Echo Request)和回显应答(ICMP Echo Reply)报文,而 ICMP 差错报告报文(例如目标不可达、时间超时等)只会发送给原始数据包的发送者。
下面详细解释其中的原因:
-
ICMP 协议类型:
ping使用的 ICMP Echo 请求报文类型是 8,回显应答报文类型是 0。- ICMP 差错报告(例如目的不可达,类型是 3,时间超时,类型是 11)是为报文发送的过程中产生问题的其它协议(例如 TCP、UDP)提供差错报告服务的。
-
ICMP 差错报文的特点:
- ICMP 差错报文是对 IP 数据包出错的一种反馈信息,用于通知发送者数据包没有成功到达目标。然而,根据 ICMP 协议规范,差错报文不会对其他的 ICMP 报文产生反馈,也就是不对 ICMP 报文再发送 ICMP 差错报文。
ICMP 差错报文不会对以下情况产生响应:
- ICMP Echo 请求和 Echo 回复
- 另一个 ICMP 差错报文
- 广播或多播的 ICMP 报文
-
原因总结:
因此,当ping命令发送的是 ICMP Echo 请求时,不会收到任何 ICMP 差错报文(例如“目的不可达”或“超时”)的回复,因为 ICMP 差错报文不会针对其他 ICMP 报文(如 Echo 请求)产生。ping命令只会收到 Echo 回复报文(如果目标主机响应的话)。
例外情况
- 如果在路径上发生了某种错误(例如路由不可达、TTL 超时等),有可能目标主机或路由器会返回一个 ICMP 差错报文。这些情况会被
ping命令识别为网络问题,尽管不会专门针对 Echo 请求报文返回差错报告。
所以总的来说,ping 命令本质上是发送 ICMP Echo 请求并等待 Echo 回复,不会因出错收到 ICMP 差错报告。

浙公网安备 33010602011771号