【icmp】用 netstat 统计icmp报文收发状况

一、ICMP简介

互联网控制消息协议(英语:Internet Control Message Protocol,缩写:ICMP)是互联网协议族的核心协议之一。它用于网际协议(IP)中发送控制消息,提供可能发生在通信环境中的各种问题反馈。
通过这些信息,使管理者可以对所发生的问题作出诊断,然后采取适当的措施解决。

ICMP 依靠IP来完成它的任务,它是IP的主要部分。
它与传输协议(如TCP和UDP)显著不同:它一般不用于在两点间传输数据。它通常不由网络程序直接使用,除了 ping 和 traceroute 这两个特别的例子。
IPv4中的ICMP被称作ICMPv4,IPv6中的ICMP则被称作ICMPv6。

虽然ICMP是包含在IP数据包中的,但是对ICMP消息通常会特殊处理,会和一般IP数据包的处理不同,而不是作为IP的一个子协议来处理。在很多时候,需要去查看ICMP消息的内容,然后发送适当的错误消息到那个原来产生IP数据包的程序,即那个导致ICMP消息被发送的IP数据包。

很多常用的工具是基于ICMP消息的。
traceroute 是通过发送包含有特殊的TTL的包,然后接收ICMP超时消息和目标不可达消息来实现的。
ping 则是用ICMP的"Echo request"(类别代码:8)和"Echo reply"(类别代码:0)消息来实现的。

二、 从 netstat 看icmp报文收发情况

# netstat  -s

Icmp:
    14907358 ICMP messages received
    797 input ICMP message failed.
    ICMP input histogram:
        destination unreachable: 1740
        timeout in transit: 506
        echo requests: 14904857
        echo replies: 228
        timestamp request: 27
    14918071 ICMP messages sent
    0 ICMP messages failed
    ICMP output histogram:
        destination unreachable: 4815
        echo request: 8209
        echo replies: 14904857
        timestamp replies: 27
IcmpMsg:
        InType0: 228
        InType3: 1740
        InType8: 14904857
        InType11: 506
        InType13: 27
        OutType0: 14904857
        OutType3: 4815
        OutType8: 8209
        OutType14: 27
        OutType69: 163

image.png

三、 ICMP报文结构

image.png

ICMP 报文类型

一类是 查询类报文 :主要用于信息的查询和采集,比如采集传输路径上的每个路由器都是谁,本次传输的报文是否达到目的地等。

另一类是 差错诊断类报文 :主要用于诊断网络故障,比如传输报文被丢弃的原因是什么等。

image.png
image.png

四、参考

互联网控制消息协议wiki
https://zh.wikipedia.org/wiki/%E4%BA%92%E8%81%94%E7%BD%91%E6%8E%A7%E5%88%B6%E6%B6%88%E6%81%AF%E5%8D%8F%E8%AE%AE
https://en.wikipedia.org/wiki/Internet_Control_Message_Protocol

互联网协议 — ICMP 互联网控制消息协议
https://blog.51cto.com/u_15301988/5133364

ICMP控制报文协议
https://klose911.github.io/html/tii/icmp.html

什么是互联网控制消息协议(ICMP)?
https://www.cloudflare.com/zh-cn/learning/ddos/glossary/internet-control-message-protocol-icmp/

你可能感兴趣的:(【icmp】用 netstat 统计icmp报文收发状况)