[计算机网络]Ping

ping 命令之所以不会收到 ICMP 差错报告报文,是因为 ping 命令本身使用的是 ICMP Echo 请求(ICMP Echo Request)和回显应答(ICMP Echo Reply)报文,而 ICMP 差错报告报文(例如目标不可达、时间超时等)只会发送给原始数据包的发送者。

下面详细解释其中的原因:

  1. ICMP 协议类型:

    • ping 使用的 ICMP Echo 请求报文类型是 8,回显应答报文类型是 0。
    • ICMP 差错报告(例如目的不可达,类型是 3,时间超时,类型是 11)是为报文发送的过程中产生问题的其它协议(例如 TCP、UDP)提供差错报告服务的。
  2. ICMP 差错报文的特点:

    • ICMP 差错报文是对 IP 数据包出错的一种反馈信息,用于通知发送者数据包没有成功到达目标。然而,根据 ICMP 协议规范,差错报文不会对其他的 ICMP 报文产生反馈,也就是不对 ICMP 报文再发送 ICMP 差错报文。

    ICMP 差错报文不会对以下情况产生响应:

    • ICMP Echo 请求和 Echo 回复
    • 另一个 ICMP 差错报文
    • 广播或多播的 ICMP 报文
  3. 原因总结:
    因此,当 ping 命令发送的是 ICMP Echo 请求时,不会收到任何 ICMP 差错报文(例如“目的不可达”或“超时”)的回复,因为 ICMP 差错报文不会针对其他 ICMP 报文(如 Echo 请求)产生。ping 命令只会收到 Echo 回复报文(如果目标主机响应的话)。

例外情况#

  • 如果在路径上发生了某种错误(例如路由不可达、TTL 超时等),有可能目标主机或路由器会返回一个 ICMP 差错报文。这些情况会被 ping 命令识别为网络问题,尽管不会专门针对 Echo 请求报文返回差错报告。

所以总的来说,ping 命令本质上是发送 ICMP Echo 请求并等待 Echo 回复,不会因出错收到 ICMP 差错报告。

作者:Esofar

出处:https://www.cnblogs.com/DCFV/p/18397335

版权:本作品采用「署名-非商业性使用-相同方式共享 4.0 国际」许可协议进行许可。

posted @   Duancf  阅读(5)  评论(0编辑  收藏  举报
相关博文:
阅读排行:
· 震惊!C++程序真的从main开始吗?99%的程序员都答错了
· 【硬核科普】Trae如何「偷看」你的代码?零基础破解AI编程运行原理
· 单元测试从入门到精通
· 上周热点回顾(3.3-3.9)
· winform 绘制太阳,地球,月球 运作规律
more_horiz
keyboard_arrow_up dark_mode palette
选择主题
menu
点击右上角即可分享
微信分享提示