您的位置  > 互联网

ICMP包发送的主要功能详述:详述的详述与详述

图片和文字无关

ICMP的主要功能包括查询报文和错误报文。 ICMP 消息通常由 IP 层或更高层协议(TCP 或 UDP)使用。 某些 ICMP 消息将错误消息返回给用户进程。

通过IP报文传输的ICMP报文主要用于涉及网络操作或错误操作的不可达报文。 ICMP 数据包发送是不可靠的,因此主机不能依靠接收 ICMP 数据包来解决任何网络问题。

1、ICMP主要功能详细说明:

1) 发现网络错误。 例如,某台主机或整个网络由于某种故障而无法访问。

2) 通知网络拥塞。 当路由器缓存太多数据包并且无法以接收数据包的速度传输它们时,将生成 ICMP End of 消息。

对于发送方来说,该信息会导致传输速度降低。 当然,产生越多的ICMP源端报文也会造成更多的网络拥塞,所以应该保守使用。

3)协助排除故障。 ICMP 支持回显功能,该功能在两台主机之间的往返路径上发送数据包。 Ping是基于此特性的通用网络管理工具,它会传输一系列数据包,测量平均往返次数并计算丢失百分比。

4) 通知超时。 如果 IP 数据包的 TTL 降至零,路由器将丢弃该数据包,并生成 ICMP 数据包来通告这一事实。

是一个可以通过发送小TTL值的数据包并监控ICMP超时通告来揭示网络路由的工具。

ICMP 消息在 IP 数据报内传输。

2. ICMP报文

所有消息的前 4 个字节相同,但其余字节不同。

类型字段可以有15个不同的值来描述特定类型的ICMP消息。 一些 ICMP 消息还使用代码字段的值来进一步描述不同的情况。

校验和字段覆盖整个 ICMP 消息。 使用的算法与IP头校验和算法相同。 需要 ICMP 校验和。

3. 消息类型

各种类型的ICMP报文如下图所示。 不同的类型由消息中的类型字段和代码字段决定。

图中最后两列表示ICMP报文是查询报文还是错误报文。

当发送 ICMP 错误消息时,该消息始终包含 IP 标头和生成 ICMP 错误消息的 IP 数据报的前 8 个字节。

这样,接收到ICMP错误消息的模块会将其与特定的协议(根据IP数据报头中的协议字段确定)和用户进程(根据IP的前8个字节中包含的TCP)关联起来。数据报)。 或者通过UDP消息头中的TCP或UDP端口号来确定)。

以下情况不会导致生成ICMP错误消息:

1)ICMP错误消息(ICMP查询消息可能会生成ICMP错误消息)

2)目的地址为广播地址或多播地址的IP数据报

3)数据报作为链路层广播

4)不是第一块IP分片

5) 源地址不是单个主机的数据报。

这些规则是为了防止因响应广播数据包的 ICMP 错误消息而引起的广播风暴。

4. ICMP地址掩码请求和响应

无盘系统使用 ICMP 地址掩码请求在引导过程中获取自己的子网掩码。 系统广播其ICMP请求消息(此过程类似于无盘系统在引导过程中使用RARP来获取IP地址)。

无盘系统获取子网掩码的另一种方法是BOOTP协议。

ICMP地址掩码请求和响应报文格式:

ICMP 消息中的标识符和序列号字段由发送方选择性设置,这些值将在响应中返回。 这样,发送者就可以将响应与请求进行匹配。

ICMP地址掩码请求报文中32位子网掩码段为空。 由接收端填写并以响应消息的形式发送回源。

5. ICMP端口不可达错误

ICMP不可达报文的一般格式:

UDP可用于查看ICMP端口不可达消息(3, 3):

UDP 的规则之一是,如果收到 UDP 数据报并且目标端口与正在使用的进程不匹配,则 UDP 将返回 ICMP 不可达消息。

ICMP 的一条规则是:ICMP 错误消息必须包括生成错误消息的数据报 IP 标头(包括任何选项),并且还必须至少包括标头后面的前 8 个字节。

这8个字节包含TCP或UDP的源端口号和目的端口号,可以将ICMP错误消息与应用程序联系起来。

导致错误的数据报中的IP头之所以被错误消息发回,是因为IP头中包含协议字段,它可以让ICMP知道如何解释后面的8个字节。

ICMP共有16种不同类型的ICMP不可达报文,代码范围为0~15。ICMP端口不可达错误代码为3。

ICMP 不可达消息中的第二个 32 位字必须为 0。

但当代码为4时,路径MTU发现机制允许路由器在这个32位字的低16位中填写出接口的MTU。

注:ICMP时间戳请求和响应报文在实际应用中已被NDP协议替代,因此省略,不再赘述。