ITN网络课程笔记(九)


九、地址解析

主机和路由器都创建路由表,以确保它们可以跨网络发送和接收数据。那么这些信息是如何在路由表中被创建的呢? 作为网络管理员,您可以手动输入这些 MAC 和 IP 地址。但这将花费大量时间,而且犯一些错误的可能性很大。您是否认为一定有某种方式,由主机和路由器可以自动完成? 当然,您是对的!即使它是自动的,您仍然必须要了解它是如何工作的,因为您可能会需要排除一些故障,或更糟的是,您的网络可能会受到威胁发起者的攻击。

模块目标: 介绍ARP和ND如何在网络上实现通信。

主题标题 主题目标
MAC 和 IP 比较 MAC 地址和 IP 地址的不同作用。
ARP 阐述 ARP 的用途。
邻居发现 描述 IPv6 邻居发现的工作方式。

1、MAC和IP

1.1、同一网络中的目的地

有时,主机必须发送消息,但它只知道目的设备的 IP 地址。主机需要知道该设备的MAC地址,但是如何才能发现它呢? 这就是地址解析变得至关重要的地方。

以太网 LAN 上的设备都配有两个主要地址:

  • 物理地址(MAC 地址) – 用于同一网络上的以太网网卡之间的通信。
  • 逻辑地址(IP地址) – 用于将数据包从源设备发送到目的设备。目的IP地址可能与源地址在同一个IP网络上,也可能在远程网络上。

第二层物理地址(即以太网MAC地址)用于将数据链路层帧从同一网络中一个网卡发送到另一个网卡, IP 数据包就封装在帧中。如果目的IP地址在同一网络上,则目的MAC地址将是目的设备的MAC地址。

在本示例中,PC1想要向PC2发送一个数据包。该图显示了从PC1发送的数据包中包含:第2层目的和源MAC地址以及第3层IPv4地址。

第2层以太网帧包含以下内容:

  • 目的MAC地址 – 这是简化的 PC2 MAC地址,55-55-55。
  • 源MAC地址 – 这是 PC1上以太网网卡的简化MAC地址,aa-aa-aa。

第 3 层 IP 数据包包含以下内容:

  • 源 IPv4 地址 – 这是 PC1 的 IPv4 地址,192.168.10.10。
  • 目的 IPv4 地址 – 这是 PC2的 IPv4 地址, 192.168.10.11。

1.2、远程网络中的目的地

当目的 IP 地址(IPv4或IPv6)处于远程网络中时,则目的 MAC 地址为主机的默认网关的地址(即路由器接口)。

在本示例中,PC1想要向PC2发送一个数据包。PC2 位于远程网络上。因为目的IPv4地址与PC1不在同一个本地网络上,所以目的MAC地址是路由器上的本地默认网关地址。

路由器通过检查目的 IPv4 地址来确定转发 IPv4 数据包的最佳路径。路由器收到以太网帧后,将解封第 2 层信息。它可借助目的 IPv4 地址确定下一跳设备,然后将 IPv4 数据包封装在发送接口的新数据链路帧中。

在我们的示例中, R1现在用新的第2层地址信息封装数据包,如图所示。

新的目的MAC地址将是R2 G0/0/1接口的地址,新的源MAC地址将是R1 G0/0/1接口的地址。

沿着路径中的每个链路,IP数据包都被封装在一个帧中。这个帧由该链路的数据链路层技术指定,如以太网。如果下一跳设备为最终目的地,则目的 MAC 地址将是该设备的以太网网卡的 MAC 地址,如图所示。

数据流中 IP 数据包的 IP 地址如何与通往目的地路径中每条链路上的 MAC 地址相关联?对于IPv4数据包,这可以通过地址解析协议 (ARP) 过程来完成。对于IPv6数据包,这个过程是ICMPv6邻居发现(ND)。

2、ARP

2.1、ARP概述

如果您的网络使用IPv4通信协议,则需要使用地址解析协议(ARP)将IPv4地址映射到MAC地址。本主题介绍ARP是如何工作的。

以太网网络上的每个IP设备都有一个唯一的以太网MAC地址。当设备发送以太网第2层帧时,将包含以下两个地址:

  • 目的 MAC 地址 - 目的设备位于同一本地网络上,则为其以太网MAC地址。如果目的主机位于另一个网络上,则帧中的目的地址将是默认网关(即路由器)的地址。
  • 源 MAC 地址 - 源主机以太网网卡的MAC地址。

该图说明了将帧发送到 IPv4 网络上同一段中的另一个主机时出现的问题。

要向同一本地IPv4网络上的另一个主机发送数据包,主机必须知道目的设备的IPv4地址和MAC地址。设备目的IPv4地址可以是已知的,也可以通过设备名称解析。然而,MAC地址必须被发现。

设备使用地址解析协议(ARP)来确定一个已知 IPv4 地址的本地设备的目的MAC地址。

ARP 提供两个基本功能:

  • 将 IPv4 地址解析为 MAC 地址
  • 维护IPv4到MAC地址映射表

2.2、ARP功能

当数据包发送到要封装入以太网帧的数据链路层时,设备将参照其内存中的表来查找映射至 IPv4 地址的 MAC 地址。此表临时存储在RAM内存中,称为 ARP 表或 ARP 缓存。

发送设备会在自己的 ARP 表中搜索目的 IPv4 地址和相应的 MAC 地址。

  • 如果数据包的目的 IPv4 地址与源 IPv4 地址处于同一个网络,则设备会在 ARP 表中搜索目的 IPv4 地址。
  • 如果目的 IPv4 地址与源 IPv4 地址不在同一个网络中,则设备会在 ARP 表中搜索默认网关的 IPv4 地址。

这两种情况都是搜索设备的 IPv4 地址和与其相对应的 MAC 地址。

ARP 表中的每一条(或每行)将一个 IPv4 地址与一个 MAC 地址绑定。我们把两个值之间的关系称为映射。这意味着您可以在表中查找 IPv4 地址并发现相应的 MAC 地址。ARP 表暂时保存(缓存)LAN 上设备的映射。

如果设备找到 IPv4 地址,其相应的 MAC 地址将作为帧中的目的 MAC 地址。如果找不到该条目,设备会发送一个 ARP 请求。

2.3、视频-ARP请求

当设备需要确定与 IPv4 地址关联的 MAC 地址,而它的 ARP 表中没有该 IPv4 地址条目时,会发送一个 ARP 请求。

ARP 消息直接封装到以太网帧中。没有 IPv4 报头。ARP 请求使用以下帧头信息封装在以太网帧中:

  • 目的 MAC 地址 – 这是一种要求 LAN 上的所有以太网网卡接受并处理 ARP 请求的广播地址FF-FF-FF-FF-FF-FF。
  • 源 MAC 地址 – 这是ARP请求发送方的MAC地址。
  • 类型 - ARP 消息的类型字段为 0x806。该类型字段会通知接收网卡需要将帧的数据部分传递给 ARP 进程处理。

因为 ARP 请求属于广播,交换机会将其泛洪到除接收端口外的其他所有端口。局域网上的所有以太网网卡都会处理广播,并且必须将ARP请求发送到其操作系统进行处理。每台设备必须处理 ARP 请求,以检查目的 IPv4 地址是否与其自己的地址相匹配。路由器不会将广播转发到其他接口。

LAN 上只有一台设备的 IPv4 地址与 ARP 请求中的目的 IPv4 地址相匹配。所有其他设备将不应答。

2.4、视频-ARP操作 -ARP应答

只有具有与ARP请求相应的目的IPv4地址的设备才会以ARP应答做出响应。ARP 应答使用以下帧头信息封装在以太网帧中:

  • 目的 MAC 地址 – 这是ARP请求发送方的MAC地址。
  • 源 MAC 地址 – 这是ARP应答发送方的MAC地址。
  • 类型 – ARP 消息的类型字段为 0x806。该类型字段会通知接收网卡需要将帧的数据部分传递给 ARP 进程处理。

只有原始发送 ARP 请求的设备会收到单播 ARP 应答。收到该 ARP 应答后,设备会将 IPv4 地址及相应的 MAC 地址添加到自身的 ARP 表中。该 IPv4 地址的数据包现在便可使用其相应的 MAC 地址封装在帧中。

如果没有设备响应 ARP 请求,就无法创建帧,那么这个数据包会被丢弃。

ARP 表中的条目具有时间戳。如果设备在时间戳到期前没有从特定设备收到帧,此设备的条目将会从 ARP 表中删除。

此外,也可以在 ARP 表中输入静态映射条目,但这种情况很少见。静态 ARP 表条目没有到期时间,必须手动删除。

注意: IPv6 使用与 IPv4 类似的 ARP 流程,称为 ICMPv6 邻居发现(ND)。与 IPv4 的 ARP 请求和 ARP 应答类似,Pv6 使用邻居请求和邻居通告消息。

2.5、视频-ARP在远程通信中的作用

当目的 IPv4 地址与源 IPv4 地址位于不同网络时,源设备需要将帧发送到其默认网关。这是本地路由器的接口。每当源设备具有 IPv4 地址在其他网络中的数据包时,它会使用路由器的目的 MAC 地址将该数据包封装在帧中。

默认网关的 IPv4 地址存储在主机的 IPv4 配置中。当主机创建通往某台目的主机的数据包时,会将目的 IPv4 地址与其自己的 IPv4 地址进行比较,以确定两个 IPv4 地址是否位于相同的第 3 层网络上。如果目的主机不在同一网络上,源主机将从 ARP 表中查找默认网关的 IPv4 地址条目。如果没有该条目,源主机将使用 ARP 流程来确定默认网关的 MAC 地址。

2.6、从ARP表中删除条目

对于每台设备,ARP 缓存定时器将会删除在指定时间内未使用的 ARP 条目。时间根据设备的操作系统不同而不同。例如,较新的 Windows 操作系统将 ARP 表条目存储 15 秒到 45 秒之间

也可以使用命令来手动删除 ARP 表中的部分或全部条目。当条目被删除之后,要想在 ARP 表中输入映射,必须重复一次发送 ARP 请求和接收 ARP 回复的过程。

2.7、网络设备上的ARP表

在思科路由器上,show ip arp命令用于显示 ARP 表。

在 Windows 10 PC 上,arp –a命令用于显示 ARP 表。

2.8、ARP问题-ARP广播和ARP欺骗

作为广播帧,本地网络上的每台设备都会收到并处理 ARP 请求。在一般的商业网络中,这些广播对网络性能的影响可能微不足道。但是,如图所示,如果大量设备都已启动,并且同时开始使用网络服务,网络性能可能会有短时间的下降。在设备发出初始 ARP 广播并获取必要的 MAC 地址之后,网络受到的影响将会降至最小。

有时,使用 ARP 可能会造成潜在的安全风险。威胁发起者可以使用 ARP 欺骗来执行 ARP 毒化攻击。如图所示,威胁发起者使用这种技术来应答属于另一台设备(例如默认网关)的 IPv4 地址的 ARP 请求。威胁发起者会发送一个带有自己 MAC 地址的 ARP 应答。ARP 应答的接收方会将错误的 MAC 地址添加到其 ARP 表中,并将这些数据包发送给威胁发起者。 企业级的交换机包含称为动态 ARP 检查 (DAI) 的缓解技术。DAI 不在本课程的讨论范围之内。

3、IPv6邻居发现

3.1、视频-IPv6邻居发现

如果您的网络使用IPv6通信协议,则需要使用邻居发现协议(ND)将 IPv6 地址与 MAC 地址进行匹配。本主题介绍ND是如何工作的。

3.2、IPv6邻居发现消息

IPv6 邻居发现协议有时被称为 ND 或 NDP。在本课程中,我们称它为 ND。ND使用ICMPv6为IPv6提供地址解析、路由器发现和重定向服务。ICMPv6 ND 使用五种 ICMPv6 消息来执行这些服务:

  • 邻居请求消息
  • 邻居通告消息
  • 路由器请求消息
  • 路由器通告消息
  • 重定向消息

邻居请求和邻居通告消息用于设备到设备的消息传递,例如地址解析(类似于 IPv4 的 ARP)。设备包括主机计算机和路由器。

路由器请求和路由器通告消息用于设备和路由器之间的消息传递。通常,路由器发现用于动态地址分配和无状态地址自动配置 (SLAAC)。

注意: 第五个 ICMPv6 ND 消息是一个重定向消息,用于更好的下一跳选择。这不在本课程的讨论范围之内。

IPv6 ND 是在 IETF RFC 4861 中定义的。

3.3、IPv6邻居发现-地址解析

与IPv4的ARP非常相似,IPv6设备使用IPv6 ND来确定一个已知IPv6地址的设备的MAC地址。

ICMPv6 邻居请求和邻居通告消息用于MAC地址解析。这类似于ARP用于IPv4的ARP请求和ARP应答。例如,假设 PC1 想要ping PC2的Ipv6地址2001:db8:acad::11。为了确定已知IPv6地址的MAC地址,PC1发送一个ICMPv6邻居请求消息,如图所示。

ICMPv6邻居请求消息使用特定的以太网和IPv6组播地址发送。这允许接收设备的以太网卡确定邻居请求消息是否属于它自己,而不必将它发送到操作系统进行处理。

PC2使用包含其MAC地址的ICMPv6邻居通告消息来应答请求。


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