Arp 协议

Posted by persuez on January 8, 2019

如果一台主机要将一个帧发往另一台主机,仅知道对方的 IP 地址是不够的,还需要知道主机在网络中的有效硬件地址。那这时就需要一种技术(或某种协议)可以由已知的 IP 地址获得主机所在网络的有效硬件地址,我们通常使用 ARP 协议由 IP 地址获得相关硬件地址。注意以上所说的 IP 地址是指 IPv4,IPv6 在以太网中用邻居发现协议,它被并入了 ICMPv6 协议。

ARP 提供了网络中从 IPv4 到相关硬件地址的动态映射。我们使用动态这个术语是因为它会自动执行和随时间变化,而不需要系统管理员重新配置(如果发生变化)。也就是说,如果一台主机改变了它的网络接口卡,从而改变了它的硬件地址(但保留其分配的 IP 地址),ARP 可以在一定延时后继续正常工作。ARP 操作通常与用户或系统管理员无关。 –《TCP/IP 详解》卷一第二版第 4 章

下面我将详细描述 ARP 的一些细节,主要是在以太网中由 IPv4 得到 MAC 地址,MAC 地址是以太网中硬件地址的叫法或者叫做物理地址。

工作原理

主机向自己所在的网络广播一个 ARP 请求,该请求包含目标机器的网络地址。此网络上的其他机器都将收到这个请求,但只有被请求的目标机器会回应一个 ARP 应答,其中包括自己的物理地址。因此,ARP 在正常工作模式下,仅适用于广播网罗,链路层能将一个消息交付到它连接的所有网络设备,这被称为链路层广播。下图中的斜线阴影部分显示了一个广播域。在非广播网络(有时被称为非广播多路访问(NBMA))中,可能需要更复杂的映射协议。