第 6 章 互联网控制报文协议
本作品已使用人工智能进行翻译。欢迎您提供反馈和意见:translation-feedback@oreilly.com
"ICMP 错误信息提示在处理 Network+数据报时遇到的网络错误条件。根据具体情况,报告的错误条件可能在短期内得到解决,也可能得不到解决"。
RFC 4443
Network+ 控制信息协议(ICMP)在网络运行期间提供错误信息和反馈。这些信息可让用户深入了解网络的当前状态,从而更简单地排除网络连接问题。ICMP 错误信息通常是在传输尝试失败时发送的。此外,ICMP 信息还允许我们向网络询问信息。本章将通过深入研究几种最常见的报文类型和导致这些报文的条件来解释 ICMP。这里使用的基本工具包括 Wireshark 的捕获、Windows 命令 (DOS) shell 的输出以及 Cisco 路由器的输出。
RFC 792 定义了几种 ICMP 消息类型,是我们讨论的基础。当代网络通常使用其中的几种报文类型来处理标准问题。其他一些 RFC 也对 ICMP 作出了贡献,其中大多数都是为了处理非常特殊的情况。本章末尾列出了这些 RFC。
ICMP 位于 TCP/IP 模型的互联网层(第 3 层),封装在 IP 数据报中(如图 6-1 所示)。所有基于 IP 的节点,无论操作系统或设备类型如何,都使用 ICMP 发送错误和通知信息。不过,不同系统的行为可能有所不同。

图 6-1. ICMP 封装
根据 RFC,为了将错误信息保持在最低水平,不发送有关 ICMP 错误信息的 ICMP 错误信息,在分片 IP 数据包的情况下,只发送有关 IP 数据包第一个片段(片段 0)的错误信息。因此,如果因为某个问题生成了 ICMP 错误报文,该报文不会激发其他错误报文的生成。但是,如果 ICMP 报文是信息性的,就会产生其他 ICMP 报文。例如,如果你要通过 ICMP echo 请求 ping 另一个网络上的节点,而中间的路由器无法将流量转发到目的地,那么路由器可能会响应一条 ICMP 目的地不可达报文。本章后面将对这些 ICMP 消息类型进行更全面的解释。
安全性通常不会与 ICMP 联系在一起,因为所定义的许多报文类型都提供有关网络或其运行的明文信息。此外,许多网络设备和主机都被配置为毫不犹豫地回答 ICMP 问题。就traceroute 而言,通常允许数据包穿越网络,而不管其来源或目的如何。最后,ICMP echo 请求经常被用于旨在破解加密方案的数据包注入攻击,因为有效载荷中包含了字母表。这为加密前和加密后的快照提供了易于识别的模式。
结构
一般来说,ICMP 报文具有类似的结构。接下来的一系列图是 Wireshark 对同一个 ICMP 数据包的观察,每个图都指出了不同的方面。ICMP echo 请求是 IP 数据包的有效载荷,包含在数据字段中。ICMP 没有 TCP 或 UDP 报头。展开 IP 报头后,我们会发现 ICMP 的 IP 数据包有效载荷类型是 01。图 6-2 中突出显示了这一点。

图 6-2. IP 有效载荷类型 ICMP ...
Become an O’Reilly member and get unlimited access to this title plus top books and audiobooks from O’Reilly and nearly 200 top publishers, thousands of courses curated by job role, 150+ live events each month,
and much more.
Read now
Unlock full access