ITN网络课程笔记(十三)


十三、ICMP

欢迎来学习ICMP!

假设您有一套复杂的火车组模型。您的轨道和火车全部连接好并通了电,正准备出发。您按下了开关。火车在轨道的中途停了下来。您马上就知道问题很可能出在火车停下的地方,所以您先去那里看看。用网络将其可视化并不容易。幸运的是,有一些工具可以帮助您定位网络中的问题区域,并且它们可以与 IPv4 和 IPv6 网络一起工作!您会很高兴知道,本模块有几个Packet Tracer活动来帮助您练习使用这些工具,所以让我们开始测试吧!

模块目标: 使用各种工具测试网络连接。

主题标题 主题目标
ICMP 消息 说明如何使用 ICMP 测试网络连接。
Ping 和 Traceroute 测试 说明如何使用 Ping 和 Traceroute 实用程序测试网络连接。

1、ICMP消息

1.1、ICMPv4 and ICMPv6消息

在本主题中,您会了解不同类型的 Internet 控制消息协议 (ICMP) ,以及用于发送它们的工具。

虽然 IP 只是“尽最大努力”的协议,但在与另一个IP设备通信时,TCP/IP套件确实提供了错误消息和参考消息。这些消息使用 ICMP 服务发送。其用途是就特定情况下处理 IP 数据包的相关问题提供反馈,而并非是使 IP 可靠。ICMP 消息并非必需的,而且在网络内通常出于安全原因而被禁止。

ICMP 可同时用于 IPv4 和 IPv6。ICMPv4 是 IPv4 的消息协议。ICMPv6 为 IPv6 提供相同的服务,此外,还包括其他功能。在本课程中,涉及 ICMPv4 和 ICMPv6 时均会使用术语 ICMP。

ICMP 消息的类型及其发送原因非常多。ICMPv4 和 ICMPv6 通用的 ICMP 消息包括:

  • 主机联通性
  • 目的地或服务不可达
  • 超时

1.2、主机可接通性

ICMP Echo消息可用于测试 IP 网络上主机的可达性。本地主机向一台主机发送 ICMP Echo请求。如果主机可用,目的主机会回应以Echo应答。

1.3、目的地或服务不可达

当主机或网关收到无法传送的数据包时,它会使用 ICMP 目的地不可达消息通知源主机,目的地或服务无法到达。消息包括指示数据包为何无法传送的代码。

ICMPv4 的目的地不可达代码示例有:

  • 0 - 网络不可达。
  • 1 - 主机不可达。
  • 2 - 协议不可达。
  • 3 - 端口不可达。

ICMPv6 的目的地不可达代码示例有:

  • 0-没有通往目标的路由。
  • 1-管理上禁止与目的地通信(例如防火墙)
  • 2-超出源地址的范围
  • 3-地址无法访问
  • 4-端口不可达。

注意: ICMPv6 的目的地不可达消息代码与此类似,但稍有不同。

1.4、超时

路由器使用 ICMPv4 超时消息表明,因为数据包的生存时间 (TTL) 字段递减到 0 而不能转发该数据包。如果路由器接收数据包并且将 IPv4 数据包的 TTL 字段的值递减为零,则它会丢弃数据包并向源主机发送超时消息。

如果路由器因数据包过期而无法转发 IPv6 数据包,ICMPv6 也会发送超时消息。ICMPv6使用IPv6跳数限制字段来确定数据包是否已过期,而不是IPv4 TTL字段。

注意: traceroute工具使用超时消息。

1.5、ICMPv6消息

在 ICMPv6 中发现的信息和错误消息非常类似于 ICMPv4 的控制和错误消息。但是,ICMPv6 拥有 ICMPv4 中所没有的新特性和功能提升。ICMPv6 消息封装在 IPv6 中。

ICMPv6 在邻居发现协议(ND 或 NDP)中包括四个新协议。

IPv6 路由器和 IPv6 设备之间的消息传递,包括动态地址分配如下所示:

  • 路由器请求 (RS) 消息
  • 路由器通告 (RA) 消息

IPv6 设备之间的消息传递,包括重复的地址检测和地址解析如下所示:

  • 邻居请求 (NS) 消息
  • 邻居通告 (NA) 消息

注意: ICMPv6 ND 还包括重定向消息,与 ICMPv4 中使用的重定向消息功能相似。

RA消息

启用IPv6的路由器每200秒发送RA消息,向启用IPv6的主机提供编址信息。RA 消息中可以包含主机的编址信息,例如前缀、前缀长度、DNS 地址和域名。使用 SLAAC 的主机会将其默认网关设置为发送 RA 的路由器的本地链路地址。

R1 发送一条 RA 消息说,“嗨,所有 IPv6设备大家好。我是 R1,您可以使用 SLAAC 创建 IPv6 全局单播地址。前缀是2001:db8:acad:1::/64。顺便说一下,使用我的链接本地地址fe80::1作为你的默认网关。”

RS消息

启用IPv6 的路由器还会发送 RA 消息以响应 RS 消息。在图中,PC1 发送 RS 消息以确定如何动态接收其 IPv6 地址信息。

R1 用 RA 消息回复 RS。

  1. PC1 发送一条 RS 消息说,“嗨,我刚刚启动。网络上是否有 IPv6 路由器?我需要知道如何动态获取我的 IPv6 地址信息。”
  2. R1 用 RA 消息回复。“嗨,所有IPv6 设备大家好。我是 R1,您可以使用 SLAAC 创建 IPv6 全局单播地址。前缀是2001:db8:acad:1::/64. 顺便说一下,使用我的链接本地地址fe80::1作为你的默认网关。”

NS消息

当设备分配有全局IPv6单播或本地链路单播地址时,则建议对地址执行 重复检测(DAD) 来确保IPv6地址的唯一性。如图所示,要检查地址的唯一性,设备将发送 NS 信息,其中使用自身 IPv6 地址作为目标 IPv6 地址。

如果网络中的其他设备具有该地址,则会使用 NA 消息进行响应。此 NA 消息通知发送方设备地址已在使用。如果回应的 NA 消息未在固定的一段时间返回,则单播地址是唯一的,可以使用。

注意: DAD 不是必需的,但是 RFC 4861 建议对单播地址执行 DAD。

PC1向自己新配置的IPv6地址发送一个NS邻居请求消息,以确保网络上没有其他主机具有相同的IPv6地址,这是一个DAD,重复地址检测。

PC1 发送一条 NS 消息来检查地址的唯一性,“谁有 IPv6 地址 2001:db8:acad:1::10,请给我你的 MAC 地址? “

NA消息

当 LAN 上的设备知道目的 IPv6 单播地址,但不知道其以太网 MAC 地址时,会使用地址解析。要确定目的 MAC 地址,设备会将 NS 消息发送到请求节点地址。该消息包括已知(目标)IPv6 地址。具有目标 IPv6 地址的设备会使用包含其以太网 MAC 地址的 NA 消息进行回应。

在图中,R1向2001:db8:acad:1::10发送一条NS消息,询问它的MAC地址。

  1. R1发送一个地址解析NS消息。“谁有IPv6地址2001:db8:acad:1::10,请给我你的MAC地址?”
  2. PC1 回复了 NA 消息。“我是2001:db8:acad:1::10,我的 MAC 地址是 00:aa:bb:cc:dd:ee。 “

2、Ping和Traceroute测试

2.1、Ping-测试连接性

在上一主题中,介绍了 ping 和跟踪路由 (tracert) 工具。在本主题中,您将了解每个工具的使用情况以及如何使用它们。Ping 是一种测试程序,它使用 ICMP Echo请求和Echo应答消息来测试主机之间的连接。

为了测试与网络上的另一台主机的连接,可使用 ping 命令将回应请求发送给该主机地址。若指定地址处的主机收到回应请求,便会使用Echo应答进行响应。每收到一个Echo应答,ping都会提供发出请求与收到应答的时间反馈。这可以作为网络性能的度量。

Ping 对响应规定了超时值。如果在超时前没有收到应答,ping 会提供一条消息,表示未收到响应。这可能表示存在问题,但是,还可能表示在网络上启用了阻止 ping 消息的安全功能。如果在发送ICMP Echo请求之前需要执行地址解析(ARP或ND),那么第一次ping通常会超时。

所有请求发送完毕后,ping实用程序会提供摘要,包括成功率和到达目的地的平均往返时间。

使用ping进行的连通性测试的类型包括:

  • Ping 本地环回
  • 向默认网关发出 ping 命令
  • Ping 远程主机

2.2、对回环执行ping命令

Ping可用于测试本地主机上IPv4或IPv6的内部配置。要执行此测试,对于 IPv4,我们ping本地环回地址 127.0.0.1,对于 IPv6,则是 ::1。

从 127.0.0.1 接收的 IPv4 响应或从 ::1 接收的 IPv6 响应,表示主机上的 IP 安装正确。此响应来自网络层。但是,此响应并不代表地址、掩码或网关配置正确。它也不能说明有关网络协议栈下层的任何状态。它只测试 IP 网络层的 IP 连接。如果收到错误消息,则表示该主机上的 TCP/IP 无法正常运行。

  • 对本地主机执行 Ping 操作可确认本地主机上已采用 TCP/IP 并且工作正常。
  • 对 127.0.0.1 执行 ping 操作导致设备对自身执行 ping 操作。

2.3、向默认网关发出ping命令

您也可以使用ping 测试主机在本地网络中通信的能力。这通常是通过 ping 主机网关 IP 地址完成的。成功 ping通网关表示主机和充当网关的路由器接口在本地网络中均运行正常。

对于此测试,最常用的是网关地址,因为路由器在一般情况下始终都能正常运行。如果网关地址不响应,可以将ping发送到本地网络上已知能够正常运行的另一台主机的 IP 地址。

如果网关或另一台主机做出响应,则说明本地主机可以通过本地网络成功通信。如果网关不响应但其另一台主机响应,可能说明充当网关的路由器接口存在问题。

一种可能性是在主机上配置了错误的网关地址。另一种可能原因是路由器接口完全正常,但对其采取了阻止其处理或响应 ping 请求的安全限制。

主机会 ping 其默认网关,发送 ICMP Echo请求。默认网关会发送Echo应答,确认连接。

2.4、Ping远程主机

Ping 也可用于测试本地主机跨互联网通信的能力。如图所示,本地主机可以 ping 远程网络中运行正常的 IPv4 主机。路由器使用其 IP 路由表转发数据包。

如果 ping 成功,则说明网际网络大部分运行正常。在互联网络上成功 ping通即确认本地网络上的通信正常,充当网关的路由器运行正常,且可能位于本地网络和远程主机网络之间路径上的所有其他路由器运行正常。

此外,还可以验证远程主机的功能。如果远程主机无法在其本地网络外通信,则它不会响应。

注意:许多网络管理员限制或禁止 ICMP 消息进入企业网络;因此,没有收到ping响应可能是由于安全限制。

2.5、Traceroute-测试路径

Ping 用于测试两台主机之间的连接,但是不提供关于主机之间设备的详细信息。Traceroute tracert实用程序可以生成通信路径上成功到达的设备列表。此列表可以提供重要的验证和故障排除信息。如果数据到达目的地,则 Trace 就会列出主机之间的路径中每台路由器上的接口。如果数据在沿途的某一跳上失败,则回应 Trace 的最后一个路由器的地址可以提供指示,说明发现问题或有安全限制的地方。

往返时间

Traceroute 可提供沿路径每一跳的往返时间并指示是否有某一跳未响应。往返时间是数据包到达远程主机以及从该主机返回响应所花费的时间。星号 (*) 用于表示丢失的或无应答的数据包。

此信息可用于在路径中定位有问题的路由器,或表示路由器配置为不应答。如果显示器显示特定的某一跳响应时间长或数据丢失,这表示该路由器的资源或其连接可能压力过大。

IPv4 TTL 和 IPv6 跳数限制

Traceroute 使用第 3 层报头中的 IPv4 TTL 字段功能和 IPv6 跳数限制字段功能以及 ICMP 超时消息。

从 Traceroute 发送的第一个消息序列的 TTL 字段值为 1。这会导致此 TTL 使 IPv4 数据包在第一台路由器处超时。该路由器使用 ICMPv4 超时消息作为响应。现在,Traceroute 知道了第一跳的地址。

随后,Traceroute 逐渐增加每个消息系列的 TTL 字段值(2、3、4…)。这可为 Trace 提供数据包在该路径沿途再次超时所经过的每一跳的地址。TTL 字段的值将不断增加,直至到达目的主机或增至预定义的最大值。

到达最终目的主机后,该主机将不再以 ICMP 超时消息做出应答,而会以 ICMP 端口无法到达消息或 ICMP Echo应答消息做出应答。

2.6、Packet Tracer - 验证IPv4和IPv6编址

2.7、Packet Tracer - 使用Ping 和Traceroute 测试网络连接

单元检测

1、IPv4 和 IPv6 使用ICMP协议来提供错误消息

2、在路由器上输入ping 命令时,最常见的指示符如下所示:

  • ! - 表示收到一个 ICMP Echo 应答消息
  • . - 表示超时,正在等待 ICMP Echo应答消息
  • U - 表示收到了一个 ICMP 无法到达的消息

3、ping 命令提供有关向远程主机发送Echo请求和收到Echo应答之间时间的反馈。这可以作为网络性能的度量。一个成功的ping操作还可以表明是否可以通过网络到达目的主机。

4、ping 127.0.0.1 命令用于验证 TCP/IP 堆栈是否正常工作。这条命令可以验证从网络层到物理层再返回网络层的协议栈是否工作正常,而不会向网络介质发送任何信号。也就是说,这个测试不会超出PC本身的范畴。例如,它不检测电缆是否连接到 PC。


文章作者: wck
版权声明: 本博客所有文章除特別声明外,均采用 CC BY 4.0 许可协议。转载请注明来源 wck !
评论
  目录