2

我正在分析输出netstat -s并想知道“输入 ICMP 消息失败”的含义。下面是输出netstat -s

集成电路:
      收到 643 条 ICMP 消息
      0 输入 ICMP 消息失败。
      ICMP 输入直方图:
        无法到达的目的地:450
        回显请求:9
        回声回复:2
      已发送 102 条 ICMP 消息
      0 ICMP 消息失败
      ICMP 输出直方图:
        无法到达的目的地:84
        回显请求:9
        回声回复:9

 集成电路:
    收到 648 条 ICMP 消息
    0 输入 ICMP 消息失败。
    ICMP 输入直方图:
      无法到达的目的地:450
      回显请求:14
      回声回复:2
    已发送 107 条 ICMP 消息
    0 ICMP 消息失败
    ICMP 输出直方图:
      无法到达的目的地:84
      回显请求:9
      回声回复:14

如何将值 0 分配给“输入 ICMP 消息失败”,以及在哪些条件下将非零值分配给该字段?

4

1 回答 1

6

它在 RFC 4293 - Internet 协议 (IP) 的管理信息库 (MIB) 中定义:(第 82 页)

icmpStatsInErrors:实体(主机)收到但被确定为具有特定于 ICMP 的错误(错误的 ICMP 校验和、错误的长度等)的 ICMP 消息的数量。


我是怎么发现的?

netstat将从内核中获取它的信息,从/proc/net/snmp. 它只是格式化它。你可以在源代码中netstat看到。

所以我查看了编写 /proc 文件的相关内核代码。它是:net/ipv4/proc.c(第 338 行) 您可以看到该常量ICMP_MIB_INERRORS用于告诉我,内核正在为SNMP目的实现 ICMP MIB 。

我搜索了那个 MIB 并找到了RFC 4293。在第 82 页,您将找到所icmpStatsInErrors讨论值的定义。

开源规则!;)

于 2013-08-12T19:48:18.787 回答