2025年icmp报文格式图片(icmp报文主要有哪三大类型)

icmp报文格式图片(icmp报文主要有哪三大类型)目录 1 ICMP 协议详解 1 1 ICMP 报文通用格式 1 2 nbsp ICMP 报文协议栈结构 2 ICMP 报文首部 3 ICMP 协议报文的两个种类 3 1 差错报告报文 3 2 询问报文 4 ICMP 协议的应用 Ping 应用 网际控制报文协议 Internet Control Message Protocol 该协议主要是用于辅助 IP 协议进行数据传输的 可以报告错误信息或者异常情况 nbsp nbsp nbsp nbsp 它是 TCP IP 协议族的一个子协议



目录

1. ICMP 协议详解

1.1 ICMP报文通用格式

1.2 ICMP报文协议栈结构

2. ICMP报文首部

3. ICMP协议报文的两个种类

3.1 差错报告报文

3.2 询问报文

4. ICMP协议的应用:Ping应用


  • 网际控制报文协议(Internet Control Message Protocol)

  • 该协议主要是用于辅助IP协议进行数据传输的

  • 可以报告错误信息或者异常情况

    它是 TCP/IP协议族的一个子协议,用于在 IP 主机、路由器之间传递控制消息。控制消息是指网络通不通、主机是否可达、路由是否可用等网络本身的消息。这些控制消息虽然并不传输用户数据,但是对于用户数据的传递起着重要的作用。

    ICMP报文格式是ICMP协议的核心,它是一种用于在两台计算机之间传输控制消息的格式。ICMP报文封装在IP数据报中,其报文格式如下:

+0------7-------15---------------31
|  Type | Code  |    Checksum    |
+--------------------------------+
|          Message Body          |
|        (Variable length)       |
+--------------------------------+
  • Type(类型):1字节,标识ICMP报文的类型。常见的类型包括回显请求(8)、回显应答(0)、目的地不可达(3)、源抑制(4)、时间超过(11)等。
  • Code(代码):1字节,提供关于报文类型的进一步信息。例如,对于类型3(目的地不可达),代码可以进一步指明是网络不可达、主机不可达还是协议不可达等。
  • Checksum(校验和):2字节,用于校验整个ICMP报文的完整性。校验和的计算包括ICMP报文和IP头部的某些字段。
  • Data(数据):可变长度,根据ICMP报文的类型和代码不同而变化。通常包含导致ICMP报文生成的原始IP数据报的部分或全部信息。

ICMP消息类型代码

其中,最后一个字段的长度和内容,取决于消息的类型和代码。对应的列表如下:

表3-3 ICMP消息类型代码对应表

类型Type代码Code描述00回显应答(ping应答)30网络不可达31主机不可达32协议不可达33端口不可达34需要进行分片但设置不分片比特35源站选路失败36目的网络不认识37目的主机不认识38源主机被隔离(作废不用)39目的网络被强制禁止310目的主机被强制禁止311由于TOS,网络不可达312由于TOS,主机不可达313由于过滤,通信被强制禁止314主机越权315优先权中止生效40源端被关闭50对网络重定向51对主机重定向52对服务类型和网络重定向53对服务类型和主机重定向80请求回显(ping请求)90路由器通告100路由器请求110传输期间生存时间为0111在数据报组装期间生存时间为0120坏的IP首部121缺少必须的选项130时间戳请求(作废不用)140时间戳应答(作废不用)150信息请求(作废不用)160信息应答(作废不用)170地址掩码请求180地址掩码应答

报文示例  图3-11 ICMP消息

Frame 1: 50 bytes on wire (400 bits), 50 bytes captured (400 bits)
    Arrival Time: Mar 17, 2015 14:04:15.071870000
    Epoch Time: 1426572255.071870000 seconds
    [Time delta from previous captured frame: 0.000000000 seconds]
    [Time delta from previous displayed frame: 0.000000000 seconds]
    [Time since reference or first frame: 0.000000000 seconds]
    Frame Number: 1
    Frame Length: 50 bytes (400 bits)
    Capture Length: 50 bytes (400 bits)
    [Frame is marked: False]
    [Frame is ignored: False]
    [Protocols in frame: eth:ip:icmp:data]
    [Coloring Rule Name: ICMP]
    [Coloring Rule String: icmp || icmpv6]
Ethernet II, Src: 40:f2:e9:2e:b2:5a (40:f2:e9:2e:b2:5a), Dst: PaloAlto_00:01:1a (00:1b:17:00:01:1a)
    Destination: PaloAlto_00:01:1a (00:1b:17:00:01:1a)
        Address: PaloAlto_00:01:1a (00:1b:17:00:01:1a)
        .... ...0 .... .... .... .... = IG bit: Individual address (unicast)
        .... ..0. .... .... .... .... = LG bit: Globally unique address (factory default)
    Source: 40:f2:e9:2e:b2:5a (40:f2:e9:2e:b2:5a)
        Address: 40:f2:e9:2e:b2:5a (40:f2:e9:2e:b2:5a)
        .... ...0 .... .... .... .... = IG bit: Individual address (unicast)
        .... ..0. .... .... .... .... = LG bit: Globally unique address (factory default)
    Type: IP (0x0800)
Internet Protocol Version 4, Src: 10.30.129.205 (10.30.129.205), Dst: 10.168.121.153 (10.168.121.153)
    Version: 4
    Header length: 20 bytes
    Differentiated Services Field: 0x00 (DSCP 0x00: Default; ECN: 0x00: Not-ECT (Not ECN-Capable Transport))
        0000 00.. = Differentiated Services Codepoint: Default (0x00)
        .... ..00 = Explicit Congestion Notification: Not-ECT (Not ECN-Capable Transport) (0x00)
    Total Length: 36
    Identification: 0x3c81 (15489)
    Flags: 0x00
        0... .... = Reserved bit: Not set
        .0.. .... = Don't fragment: Not set
        ..0. .... = More fragments: Not set
    Fragment offset: 0
    Time to live: 128
    Protocol: ICMP (1)
    Header checksum: 0x0000 [incorrect, should be 0x962a (maybe caused by "IP checksum offload"?)]
        [Good: False]
        [Bad: True]
            [Expert Info (Error/Checksum): Bad checksum]
                [Message: Bad checksum]
                [Severity level: Error]
                [Group: Checksum]
    Source: 10.30.129.205 (10.30.129.205)
    Destination: 10.168.121.153 (10.168.121.153)
Internet Control Message Protocol
    Type: 8 (Echo (ping) request)
    Code: 0
    Checksum: 0xf3df [correct]
    Identifier (BE): 1056 (0x0420)
    Identifier (LE): 8196 (0x2004)
    Sequence number (BE): 0 (0x0000)
    Sequence number (LE): 0 (0x0000)
    Data (8 bytes)
      Data: 0000000000000000
      [Length: 8]

    ICMP 层区分不是很明显,一般划分在 IP层中通过 IP 包来封装ICMP数据 ,在实际传输中数据包的格式一般都是 IP 包 + ICMP包的格式,具体格式如下:

IP 首部(20字节) + 8 位类型 + 8 位代码 + 16 位校验和 + ICMP 首部其他部分( 7 个字节) + 数据。

ICMP消息封装在IP报文中,格式如下:

   +-------------------------------+
   |          ICMP message         |
   +-------------------------------+
   | IP header (Protocol = 0x01)   |
   +-------------------------------+
   |            L2 header          |
   +-------------------------------+

如果用图表的形式展现出来就是下面的这张图了

图片

ICMP的报文数据是通过封装在IP数据报中进行数据传输的

ICMP的报文分为两个部分:ICMP报文首部和ICMP报文数据

图片

图片

  • 「类型」:主要指的是ICMP报文的种类(主要有两大类,后边会进行说明)

  • 「代码」:主要是指,不同的ICMP报文种类具体有哪些错误。

  • 「校验和」:主要是校验报文在整个传输中,是否存在错误。

在前边介绍IP协议首部中,有一个8位协议,它表明的是IP数据所携带的具体数据是什么协议的。ICMP的字段值为1

图片

如果IP协议传输的数据是ICMP数据的话,那么,将会在协议中写入1

图片

  • ICMP报文主要有两大功能:查询报文和差错报文

图片

  • 「网络不可达」:IP地址可以表示一个网络,当主机号全为0时就表示的是某一个网络,如果整个网络不可达,就会报告一个类型为3,具体代码为0的ICMP协议报文。

  • 「主机不可达」:如果计算机A要和计算机B进行通信,而计算机B是关机的状态,就会出现主机不可达的情况。

  • 「网络重定向」:传输给某一个网络的数据,可能不能走该网络了,需要进行重定向

  • 「主机重定向」:如果发送的报文,主机告知不能处理,请发送到另外一个主机。

图片

  • 「回送请求或应答」:主要是验证网络是否通。假设计算机A要和计算机B进行通信,A会发送一个空的数据给B,如果B收到,就给一个回应。

  • 「时间戳请求或应答」:当需要进行时间同步时,会用到这个。

    在前边的文章中有使用到ping命令来查看网络的响应时间和TTL。这部分主要是介绍ping的原理是什么。

    ping应用主要是使用ICMP的「询问报文」,它会发送「回送请求或应答」类型的报文。当使用ping命令的时候,它首先会组装一个IP协议的报文,然后在IP的数据报中组装ICMP的询问报文,然后通过数据链路层发送出去,这个就是ping应用的原理。

图片

    通常我们会使用ping命令来查看本地的网络是否通,或者网络质量是怎么样的。平时在家中,如何出现网络故障,我们也会使用ping命令来进行排查:

  • 第一步会先ping本地回环地址127.0.0.1(如果没有返回,说明协议栈有问题,这个时候可能需要重装系统,或重新安装协议栈)

  • 如果上一步正常返回,则ping网关地址(也就是路由器地址)。如果计算机是处于内网的话,一般就是ping 192.168.0.1或者ping 192.168.1.1。如果上一步ping网关也是通的,说明本机到路由器是通的,如果不通,说明网线或者wifi是有问题的。

  • 如果ping网关是通的,则ping远端地址(比如百度)。如果不通,则说明在你家到ISP之间网络是故障的,这个时候就需要联系电信或移动或联通。

1、ICMP报文类型和代码的组合定义了报文的具体含义。例如,当一个IP数据报无法到达目的地时,路由器或目的主机会发送类型为3的ICMP报文,代码字段会进一步指明不可达的原因。

2、ICMP协议的应用包括网络诊断工具如Ping和Traceroute,它们利用ICMP报文来检测网络连通性和路径信息。此外,ICMP还用于路由器发现、地址掩码请求等网络配置和诊断任务。

3、在网络安全方面,ICMP报文也可能被用于攻击,如ICMP洪水攻击。因此,网络设备通常需要对ICMP流量进行适当的限制和过滤,以防止滥用和保护网络资源。

编程小号
上一篇 2025-01-28 15:01
下一篇 2025-03-08 16:21

相关推荐

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 举报,一经查实,本站将立刻删除。
如需转载请保留出处:https://bianchenghao.cn/bian-cheng-ri-ji/23976.html