当前位置:网站首页 > Haskell函数式编程 > 正文

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



目录

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 描述 0 0 回显应答(ping应答) 3 0 网络不可达 3 1 主机不可达 3 2 协议不可达 3 3 端口不可达 3 4 需要进行分片但设置不分片比特 3 5 源站选路失败 3 6 目的网络不认识 3 7 目的主机不认识 3 8 源主机被隔离(作废不用) 3 9 目的网络被强制禁止 3 10 目的主机被强制禁止 3 11 由于TOS,网络不可达 3 12 由于TOS,主机不可达 3 13 由于过滤,通信被强制禁止 3 14 主机越权 3 15 优先权中止生效 4 0 源端被关闭 5 0 对网络重定向 5 1 对主机重定向 5 2 对服务类型和网络重定向 5 3 对服务类型和主机重定向 8 0 请求回显(ping请求) 9 0 路由器通告 10 0 路由器请求 11 0 传输期间生存时间为0 11 1 在数据报组装期间生存时间为0 12 0 坏的IP首部 12 1 缺少必须的选项 13 0 时间戳请求(作废不用) 14 0 时间戳应答(作废不用) 15 0 信息请求(作废不用) 16 0 信息应答(作废不用) 17 0 地址掩码请求 18 0 地址掩码应答

报文示例  图3-11 ICMP消息

Frame 1: 50 bytes on wire (400 bits), 50 bytes captured (400 bits) Arrival Time: Mar 17, 2015 14:04:15.0 Epoch Time: .0 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流量进行适当的限制和过滤,以防止滥用和保护网络资源。

到此这篇icmp报文格式图片(icmp报文主要有哪三大类型)的文章就介绍到这了,更多相关内容请继续浏览下面的相关推荐文章,希望大家都能在编程的领域有一番成就!

版权声明


相关文章:

  • 手机软件后缀名是什么格式(各种手机平台的软件后缀名介绍)2025-05-22 17:00:09
  • 编程入门教学零基础(编程零基础入门视频)2025-05-22 17:00:09
  • vbf文件格式(vb的格式)2025-05-22 17:00:09
  • 编程入门教学零基础(编程入门教学零基础能学会吗)2025-05-22 17:00:09
  • 电脑软件后缀名是什么格式(电脑软件的后缀名是什么)2025-05-22 17:00:09
  • 报文格式错误什么意思(报文格式错误 (5100030))2025-05-22 17:00:09
  • 编码实现字符串转整型的函数(编码实现字符串转整型的函数是)2025-05-22 17:00:09
  • modbus RTU报文格式详解(modbus报文解读)2025-05-22 17:00:09
  • 供应链支付方式是什么意思(供应链支付工程款是什么意思)2025-05-22 17:00:09
  • 支付方式怎么填打在银行卡上(支付方式银行卡是什么意思)2025-05-22 17:00:09
  • 全屏图片