Ethernet 系列(9)-- 基础学习::ICMP

目录

1. 缩写词:

2. ICMP的目的:

2.1 什么是ICMP:

2.2 什么时候使用ICMP:

3. ICMP 头部:

4. ICMP 报文类型:

4.1 目标不可达:

4.2 重定向:

4.3 超时:

4.4 Ping(回波请求和回波回复):

5. ICMP如何工作:

5.1 目标不可达:

5.2 重定向:

5.3 超时:


1. 缩写词:

Abbreviation

Meaning

ToS

Type of Service

ICMP

Internet Control Message Protocol

IP

Internet Protocol

MTU

Maximum Transmission Unit

TTL

Time To Live

2. ICMP的目的:

2.1 什么是ICMP:

  • ICMP - Internet Control Message Protocol,互联网控制消息协议,是一种辅助协议,是IP不可或缺的一部分。
  • 这意味着每个IP设备都必须支持ICMP,ICMP消息被封装在协议号为1的IP数据包中。

2.2 什么时候使用ICMP:

当网络设备想要报告错误消息、提出路由建议或诊断网络性能时,使用此协议。

3. ICMP 头部:

  • 类型:此字段指示ICMP消息的类型。请参阅第3节了解此字段的值。 
  • 代码:此字段表示附加信息。例如:如果类型为“Destination Unreachable”,则代码将提供问题的答案:“为什么目标不可达?”。请参阅第3节了解此字段的值。 
  • 校验和:此字段用于检查ICMP标头和封装数据中的错误。 
  • 标头其余部分:此字段因消息类型/代码而异。 

此标头用于封装ICMP数据。内容取决于ICMP消息类型。 

  • 对于错误消息,将发送导致错误的数据包的IP报头和IP有效载荷的前8个字节。 
  • 对于回显消息,回显请求中的数据必须在回显回复中回显。例如,如果请求中有500个字节,那么这500个字节必须在回复中回显。 

注意:并非所有ICMP消息都封装数据。例如,ping可以有一个0字节的有效载荷,其中只包含ICMP报头。

4. ICMP 报文类型:

有许多消息类型。在这篇文章中,我们主要关注两种流行的类型: 

  • 错误消息。这种类型有三种形式: 
    • 无法到达目的地。 
    • 重定向。 
    • 时间已过。 
  • 查询消息。这种类型有两种形式: 
    • 回声请求。 
    • 回声回复

4.1 目标不可达:

  • 目标不可达消息用于通知主机数据包无法到达其目标。 
  • ICMP类型=3。 
  • ICMP代码见下表: 
  • 0

Destination network unreachable

目标网络无法连接

1

Destination host unreachable

目标主机不可达

2

Destination protocol unreachable

无法访问目标协议

3

Destination port unreachable

无法访问目标端口

4

Fragmentation needed and DF-bit set

需要分段和DF-bit set

13

Communication administratively prohibited

行政禁止通信

  • 本例中的header如下:

  • 红色框表示数据包无法到达目的地。 
  • 蓝色框表示数据包无法到达目的地的原因。 
  • 粉红色框仅用于代码4。 
  • 绿色框表示哪个数据包无法到达目的地。

4.2 重定向:

  • 路由器使用重定向消息通知主机使用不同的路由器(更好的路由)到达目的地。 
  • ICMP Type=5。 
  • ICMP Code见下表:

0

Redirect for network

主机不仅应重定向到此目标IP,还应重定向到同一网络中的所有目标

Prohibited since RFC 1812

1

Redirect for host

主机应将所有数据包重定向到此目标IP

2

Redirect for ToS and network

与Code 0相同,但仅适用于与此代码具有相同ToS值的数据包

Prohibited since RFC 1812

3

Redirect for ToS and host

与Code 1相同,但仅适用于与此代码具有相同ToS值的数据包

  • 本例中的header如下:

  • IP地址:此字段表示应将数据包发送到的路由器的IP地址,而不是此路由器。 
  • IP报头和原始数据报数据的前8个字节:此字段指示导致发送此重定向消息的消息。

4.3 超时:

  • 超时消息用于两种情况: 
    • 通知发送方路由器无法转发数据包,因为IP TTL已过期。 
    • 通知发送方,由于并非所有碎片都及时到达,设备必须丢弃碎片数据包。 
  • ICMP Type=11。 
  • ICMP  Code见下表:

0

TTL exceeded in transit

1

Fragment reassembly time exceeded

  • 本例中的header如下:

  • IP报头和原始数据报数据的前8个字节:此字段指示导致发送此超时消息的消息。

4.4 Ping(回波请求和回波回复):

  • 如果主机收到回声请求,它应该向请求的源发送回声回复。
  • 对于回显请求,ICMP Type=0。对于回显应答,ICMP Type=0。
  • ICMP Code = 0.
  • 本例中的header如下:

  • 标识符:此字段用于跟踪它发送的ping。对于发送的每个ping序列,此值将递增1。应答消息将使用与请求消息相同的标识符。 
    • 例如:ping 8.8.8.8,主机将发送5个标识符为0的Echo请求。那么。ping 1.1.1.1,主机将发送5个标识符为1的回声请求。 
  • 序列号:此字段用于跟踪一系列中的每个请求和应答交换。 
    • 例如:ping 8.8.8.8,主机将发送5个标识符为0的Echo请求。请求1和应答1将具有相应的序列号=0,请求2和应答2将具有相应序列号=1,。。。 
    • 注意:此序列号可以解释为大端阶或小端阶(下图中的蓝色框)。示例:Wireshark显示两者。

  • 有效载荷:此字段只是一串ASCII字符。注: 
    • 请求的有效载荷必须在回复中发回。 
    • Ping可以在没有有效载荷的情况下发送。消息大小为28字节(IP报头+ICMP报头)。

5. ICMP如何工作:

5.1 目标不可达:

  • 步骤1:PC1向R1发送一个数据包(目的地为PC3)。 
  • 步骤2:R1有一个匹配的路由,因此它将数据包转发给R2。 
  • 步骤3:R2没有与目标192.168.3.10匹配的路由,因此它丢弃了数据包。→ 解释一下? 
  • 步骤4:R2向PC1发送ICMP目标不可达消息。

5.2 重定向:

  • 步骤1:PC1向R1发送数据包(目的地SRV1)。 
  • 步骤2:R1将数据包转发到目的地R2。 
  • 步骤3:R1向PC1发送ICMP重定向,说明:“发送到SRV1 IP地址的数据包应通过R2发送”。 
  • 步骤4:PC1通过R2而不是R1向SRV1发送未来的数据包。

5.3 超时:

  • 步骤1:PC1向R1发送一个TTL=2的数据包(目标PC3)。 
  • 步骤2:R1接收到一个数据包,并意识到必须将其转发给R2,然后将TTL减为1并转发给R2。 
  • 步骤3:R2接收到一个数据包,并意识到必须将其转发给R3,然后将TTL减为1,这将导致TTL=0。然后,R2丢弃该数据包。 
  • 步骤4:R2向PC1发送ICMP超时消息。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

道法自然0402

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值