我正在写关于地址解析协议的词条，想了解一下背景知识，你能详细介绍一下吗？
user
地址解析协议(ARP)为IP地址到对应的硬件地址之间提供动态映射。ARP用于将计算机的网络地址（IP地址32位）转化为物理地址（MAC地址48位）[RFC826].ARP协议是属于链路层的协议，在以太网中的数据帧从一个主机到达网内的另一台主机是根据48位的以太网地址（硬件地址）来确定接口的，而不是根据32位的IP地址。内核（如驱动）必须知道目的端的硬件地址才能发送数据。当然，点对点的连接是不需要ARP协议的。#### ARP的原理

1．ARP的高速缓存技术
ARP高效运行的关键是每台使用ARP的主机中都有一个ARP高速缓存。ARP在缓存中存放了最近被解释的IP地址到MAC地址之间的映射记录，以减少广播量。由于多数网络通信都要连续发送多个报文，所以高速缓存大大提高了ARP的效率。ARP缓存总是为本地子网保留硬件广播地址(0xffffffffffffh)作为一个永久项。此项使主机能够接受ARP广播，当查看缓存时，该项不会显示。另外，在ARP请求报文中还放人信源机的IP地址和MAC地址的映射，以防止信宿机接着为信源机的MAC地址再来一次ARP请求，形成死锁。信源机在广播自己的地址映射时，网络上所有主机都可以将它存人自己的缓存。在新机入网时，主动广播自己的地址映射，以减少其他主机对该新主机的ARP请求广播。ARP协议使用一个数据结构atp—table的表。表中每个条目描述一个IP和物理地址的对应。这些条目在IP地址需要转换的时候创建，随着时间推移变得陈旧的时候被删除。
ARP表包含一个指针(arp—tables向量表)的表，把arp—table的条目链接在一起。这些条目被缓存，以加速对它们的访问。每一个条目用它的IP地址的最后两个字节做表的索引进行查找，然后跟踪这个条目链，直到找到正确的条目。Linux也缓存从atp—table条目预先建立的硬件头，用hhcache数据结构的形式进行缓存。网络拓扑结构不断变化，IP地址可能被重新分配到不同的硬件地址。例如，一些拨号服务为它建立的每一个连接分配一个IP地址。为了让ARP表中包括最新的条目，每当需要分配一个新的条目而ARP表到达了它的最大尺寸的时候，就查找最旧的条目并删除它们，从而更新缓存表。每个动态ARP高速缓存项的生存时间从被创建时开始算起为10min。2min内未用则删除。缓存容量满时，删除最老的记录。
ARP高速缓存保存有动态项和静态项。动态项是自动添加和删除的，而静态ARP项是永久的，可用TCP／IP工具ARP手工加载。静态ARP高速缓存项用于防止向路由器和服务器IP地址发出ARP请求。通过添加静态ARP项可减少ARP请求访问主机的次数。当网络接口配置改变时，应手工更新静态ARP项。对于一个ARP请求来说，除目的端硬件地址外的所有其他的字段都有填充值。当系统收到一份目的端为本机的ARP请求报文后，它就把硬件地址填进去，然后用两个目的端地址分别替换两个发送端地址，并把操作字段置为2，最后把它发送回去。在ARP背后有一个基本概念，那就是网络接口有一个硬件地址(一个48bir的值，以标识不同的以太网或令牌环网络接口)，在硬件层次上进行的数据帧交换必须使用正确的硬件地址。因此，仅仅知道主机的IP地址并不能让内核发送一帧数据给主机。内核(如以太网驱动程序)必须知道目的端的硬件地址才能发送数据。
ARP的功能是在32bitlP地址和采用不同网络技术的硬件地址之间提供动态映射。点对点链路不使用ARP。当设置这些链路时(一般在引导过程进行)，必须告知内核链路每一端的IP地址，并不涉及像以太网地址这样的硬件地址。
2．ARP高速缓存超时设置
在ARP高速缓存中的表项一般都要设置超时值。从伯克利系统演变而来的系统一般对完整的表项设置超时值为20min，而对不完整的表项(例如在以太网上对一个不存在的主机发出ARP请求)设置超时值为3min。当这些表项再次使用时，这些实现一般都把超时值重新设为20min.
3．ARP命令
ARP高速缓存在ARP的运行过程中非常关键。高速缓存中的每一项内容都有一个定时器，根据它来删除不完整和过时的表项。ARP命令加上参数—a可显示ARP高速缓存中的所有内容。超级用户可以用参数-d来删除ARP高速缓存中的某一项内容(可以在运行一些例子之前使用该命令格式，以看清楚ARP的交换过程)。另外，可以通过参数—s来增加高速缓存中的内容。这个参数需要主机名和以太网地址：对应于主机名的IP地址和以太网地址被增加到高速缓存中。新增加的内容是永久性的(比如，它没有超时值)，除非在命令行的末尾附上关键字temp。位于命令行末尾的关键字pub和，s参数一起，可以使系统起着主机ARP代理的作用。系统将回答与主机名对应的IP地址的ARP请求，并以指定的以太网地址作为回答。如果广播的地址是系统本身，那么系统就为指定的主机名起着委托ARP代理的作用。#### ARP的使用

为了查看受害机器的ARP表，我们所使用的命令非常类似于在Windows实时响应中所使用的命令：
victim#．／arp—an
从受害系统上返回的ARP表如下：
?(192．168．1．1，at00：BD：81：43：07：03[ether]onethO
结果显示了IP地址为192．168．1．1的网络接口具有MAC地址00：BD：81：43：07：03。其他信息将有助于在不能控制IP地址时，在网络上追踪IP地址为192．168．1．1的机器。可以检查每一台机器，直至发现MAC地址为06：BD：8l：43：07：03的机器。
警告：在许多操作系统中，具有足够特权的用户可以修改他自己的MAC地址(和IP地址)。在Windows或Unix机器中，这一行为是可能的。#### ARP的功能

从逻辑Internet地址到对应的物理硬件地址需要进行翻译。#### 查看ARP缓存表的方法

ARP缓存表是可以查看的，也可以添加和修改。在命令提示符下，输入“arp-a”就可以查看ARP缓存表中的内容了。用“arp-d”命令可以删除ARP表中某一行的内容；用“arp-s”可以手动在ARP表中指定IP地址与MAC地址的对应。
assistant