ARP: Address Resolution Protocol

ARP: Address Resolution Protocol

1. Introduction

对 TCP/IP 网络,Address Resolution Protocol (ARP) 在 IPv4 地址和硬件地址间提供动态映射。ARP 仅用于 IPv4;IPv6 使用 Neighbor Discovery Protocol,它被合并在 ICMPv6 之中。

使用术语动态因为映射自动发生,且随时间自动适应改变,不需要系统管理员重新配置。即,如果 host 的 network interface 改变了,因此硬件地址变了 (但是保留了原先赋值的 IP 地址),在一些延迟后,ARP 将继续正常运行。ARP 运行通常与应用用户或系统管理员无关。

硬件间交换的 frame 必须使用硬件地址进行寻址,找到正确的 interface。传统的 IPv4 网络使用自己所有的地址:32 位的 IPv4 地址。仅使用 IPv4 地址不能再使用硬件地址的网络上传输 frame。必须将有某种东西能将 IPv4 地址转换为硬件地址。

2. An Example

ARP 仅在到达的系统在相同的 IP 子网中时运行。

ARP 将 logic Internet 地址翻译未对应的 physical 硬件地址。

ARP 向每个在共享的 link-layer 分段上的 host 发送一个 Ethernet frame,称为 ARP request。这被称为 link-layer broadcast。图 4-1 展示了 broadcast domian。ARP 请求包含一个 IPv4 地址,目的地址为 10.0.0.1 且寻找下列问题的答案:“如果你配置了 IPv4 地址 10.0.0.1 作为你的 IP 地址之一,请向我响应你的 MAC 地址。”
在这里插入图片描述
在相同组播域中的所有系统使用 ARP 接收 ARP 请求。这包含不运行 IPv4 和 IPv6 协议的系统,但不包含在不同 VLANs 中的系统,如果支持 VLANs 的话。如果存在一个使用请求指定的 IPv4 地址的关联的系统,它单独使用 ARP reply 进行响应。响应包含 IPv4 地址( 用于匹配请求 ) 和对应的 MAC 地址。回复通常不使用广播,而是直接向发送方回复。接收到 ARP 请求的 host 同时也会知道发送方的 IPv4-to-MAC 地址映射,并将其记录在内存中供以后使用。

ARP 回复随后被请求的原始发送方接收,迫使 ARP 请求/回复交换的 datagram 现在能够发送了。

发送方现在能直接向目的主机发送 datagram,将 datagram 封装待 Ethernet frame 中,且使用通过 ARP 交换知道的 Ethernet 地址作为目的 Ethernet 地址。因为 Ethernet 地址引用正确的目的主机,不会有其他主机或路由器会收到该 datagram。因此,当使用直接递交时,不需要任何路由器。

发送方现在直接向目的主机发送 datagram,将其封装到 Ethernet frame 中并使用通过 ARP 交换知道的 Ethernet 地址作为目的 Ethernet 地址。

3. ARP Cache

ARP 缓存维护当前 host 和 router 所有 interface 的物理地址到 IPv4 地址的映射,其过期时间为 20 分钟,从条目被创建开始。

4. ARP Frame Format

在这里插入图片描述

5. ARP Examples

6 ARP Cache Timeout

7 Proxy ARP

Proxy ARP 使系统 (通常使特殊配置的 Router) 能回复来自不同的 host 的 ARP 请求。这使 ARP 请求的发送方错误的认为响应的系统是目的主机,但实际的目的主机是其他的主机或并不存在。Proxy ARP 应当尽量避免使用。

8 Gratuitous ARP and Address Conflict Detection (ACD)

Gratuitous ARP 发生于 host 发送一个 ARP 请求来查找它自己的地址。Gratuitous ARP 有两个目的:

  1. host 能检测是否有其他 host 配置了相同的 IPv4 地址。
  2. 如果发送 gratuitous ARP 的 host 刚刚改变了它的硬件地址 (比如更换了 interface card),广播的接收方能够更新它的 ARP 缓存。

IPv4 Address Conflic Detection (ACD) 定义了 ARP probeARP announcement

ARP probe 是一个 ARP request packet,其中 Sender’s Protocol Address (IPv4) 字段被设置为 0,它用于检测所在广播域中有没有其他系统使用目的 IPv4 地址。Sender’s Protocol Address 字段设置为 0 是为了避免污染接收方的 ARP 缓存。

ARP announcement 与 ARP probe 相同,除了 Sender’s Protocol AddressTarget Protocol Address 字段都被设置为候选 IPv4 地址。它宣称发送方意图使用候选的 IPv4 地址。

当 interface 启动或者从睡眠中唤醒,亦或是建立了一条新的链接,host 会发送一个 ARP probe。在发送至多 3 个 ARP probe 前会随机等待一段时间 (0-1s,正态分布的随机值),这是为了避免多个系统同时启动并尝试立刻执行 ACD 造成拥塞。probes 间的间隔是随机的,有 1-2s 的延迟 (正态分布)。

发送 probes 后,请求站可能受到回复或者来自其他站的 ARP request packet。如果收到回复,说明候选 IPv4 地址正在被其他站使用,如果收到具有相同的候选 IPv4 地址的 ARP probe 说明有其他站同时尝试请求使用该候选 IPv4 地址。这两种情况系统都应该展示地址冲突消息并尝试寻找其他可用的 IPv4 地址。

如果请求的 host 没有发现任何冲突,随后它会发送两个 ARP announcement,间隔 2s,来宣称该广播域中的当前 IPv4 地址已被使用。Sender’s Protocol AddressTarget Protocol Address 都被设置为候选 IPv4 地址是为了更新其他系统上的 ARP 缓存。

ACD 被认为是一个持续进行的进程,它检查每个到来的 ARP requests 和 ARP replies,确认其 Sender’s Protocol Address 是否与自己的地址相冲突。如果检测到冲突,ACD 采取以下三种措施:停止使用该地址,保留该地址并发送一个 “defensive” ARP announcement,如果仍有冲突,终止使用该地址或者仍然继续使用该地址,不管冲突 (e.g., 嵌入式设备比如 router 或 printer)。

9. The arp Command

10. Using ARP to Set an Embedded Device’s IPv4 Address

11. Attacks Involving ARP

12. Summary

  1. ARP 用于确定当前局部可达的子网中硬件地址与 IPv4 地址间的映射关系。
  2. 转发数据包的目的地与发送的主机在相同子网上,或目的地不在相同子网时抵达 router。
  3. ARP 缓存是 ARP 操作的基础,使用 arp 命令检查和维护缓存。缓存中的每个条目都有定时器,用于移除未完成和完成的条目。arp 命令显示和修改 ARP 缓存中的条目。
  4. proxy ARP (当一个路由器回复对另一个路由器接口可访问的主机的 ARP 请求时)。
  5. gratuitous ARP (使用自己所有的 IPv4 地址发送 ARP 请求,通常在引导程序中发生)。
  6. IPv4 地址冲突检测 (ACD),使用持续运行的 ARP-like 交换来避免相同广播域中的地址重复。
  7. 涉及 ARP 的攻击,大部分涉及通过伪造 ARP 响应来模拟 hosts。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值