第4章 地址解析协议 [TCP/IP详解 卷1:协议]
IP协议的设计目的是为跨越不同类型物理网络的分组交换提供互操作。这需要网络层软件使用的地址和底层网络硬件使用的地址之间进行转换。 网络接口硬件通常有一个主要的硬件地址(例如以太网或802.11无线接口的48位地址)。由硬件交换的帧需要使用正确的硬件地址定位到正确的接口;否则,无法传输数据。但是,一个传统IPv4网络需要使用自己的地址:32位的IPv4地址。如果一台主机要将一个帧发送到另一台主机,仅知道这台主机的IP地址是不够的,还需要知道主机在网络中的有效硬件地址。操作系统软件(即以太网驱动程序)必须知道目的主机的硬件地址,以便直接向它发送数据。对于TCP/IP网络,地址解析协议(ARP)提供了一种在IPv4地址和各种网络技术使用的硬件地址之间的映射。ARP仅用于IPv4,IPv6使用邻居发现协议,它被合并入ICMPv6。
这里需要注意的是,网络层地址和链路层地址是由不同部门分配的。对于网络硬件,主地址是由设备制造商定义的,并存储在设备的永久性内存中,所以它不会改变。
地址解析是发现两个地址之间的的映射关系的过程。对于使用IPv4的TCP/IP协议族,这是由运行的ARP来实现的。ARP是一个通用的协议,从这个意义上看它被设计为支持多种地址之间的映射。实际上,ARP几乎总是用于32位IPv4地址和以太网的48位MAC地址之间的映射。
ARP提供从网络层地址到相关硬件地址的动态映射。(动态是指如果一台主机改变它的网络接口卡,从而改变了它的硬件地址(但保留其分配的IP地址),ARP可以在一定延时后继续正常运作)。ARP操作通常与用户或系统管理员无关。
当我们使用Internet服务时,例如在浏览器中打开一个网页,本地计算机必须确定如何与相关的服务器联系。它首先是判断该服务位于本地(同一IP子网的一部分)还是远程。如果是远程的,需要一台可以到达目的地的路由器。仅在到达位于同一子网的系统时,ARP才能工作。
直接交付发生在一个IP数据报被发送到一个IP地址,而该地址与发送方具有相同IP前缀的情况下。
ARP高效运行的关键是维护每个主机和路由器上的ARP缓存(或表)。该缓存使用的地址解析为每个接口维护从网络层地址到硬件地址的最新映射。
【总结】:
ARP是TCP/IP实现中的一个基本协议,但它通常在应用程序或用户没有察觉的情况下运行。ARP用于确定本地可达的IPv4子网使用的IPv4地址对应的硬件地址。它在数据报目的地与发送方处于同一子网时使用,还用于数据报的目的地不在当前子网时将其转发到一台路由器。ARP缓存是其运行的基础,我们可使用arp命令查看和处理缓存。缓存中每个条目都有一个计时器,用于清除不完整的条目和完整的条目。arp命令可显示和修改ARP缓存中的条目。