- 在大多数的TCP/IP实现中,ARP是一个基础协议,但是它的运行对于应用程序或系统管理员来说一般是透明的。ARP高速缓存在它的运行过程中非常关键, 我们可以用arp命令对高速缓存的进行检查和操作。高速缓存中的每一项内容都有一个定时器,根据它来删除不完整和完整的表项。arp命令可以显示和修改ARP高速缓存中的内容。
- 我们介绍了ARP的一般操作,同时也介绍了一些特殊的功能:委托ARP(当路由器对来自于另一个路由器接口的ARP请求进行应答时)和免费ARP(发送自己IP地址的ARP请求,一般发生在引导过程中)。
1. 当输入命令以生成类似图4-4那样的输出时,发现本地ARP快速缓存为空以后,输入命令
bsdi % rsh svr4 arp -4
如果发现目的的主机上的ARP快速缓存也是空的,那将发生什么情况?(该命令将在svr4主机上运行arp-a命令)
- 发出一条rsh命令与另一台主机建立一个TCP连接。这样做引起在两个主机之间交换IP数据报。为此,在那台主机的ARP缓存中必须有我们这台主机的登记项。因此,即使在执行rsh命令之前,ARP缓存是空的,当rsh服务器执行arp命令时,必须保证ARP缓存中登记有我们这台主机。
2. 请描述如何判断一个给定主机是否能正确处理接收到的非必要的ARP请求的方法。
- 保证你的主机上的ARP缓存中没有登记以太网上的某个叫作foo的主机。保证foo引导时发送一个免费ARP请求,也许是在foo引导时,在那台主机上运行tcpdump。然后关闭主机foo,使用说明了temp选项的arp命令,在你的系统ARP缓存中为foo输入一个不正确的登记项。引导foo并在它启动好之后,察看主机的ARP缓存,看看不正确的登记项是不是已经被更正了。
3. 由于发送一个数据包后ARP将等待响应,因此4.2节所描述的步骤7可能会持续一段时间。你认为ARP将如何处理在这期间收到相同目的IP地址发来的多个数据包?
- 阅读主机需求(Host Requirement)RFC的2.3.2.2节和本书的11.9节。
4. 在4.5节的最后,我们指出Host Requirements RFC 和伯克利派生系统在处理活动ARP表目的超时存在差异。那么如果我们在一个由伯克利派生系统的客户端上,试图与一个正在更换以太网卡而处于关机转态的服务器主机联系,这时会发生什么?如果服务器在引导过程中广播一份免费ARP,这种情况是否会发生变化?
- 假设当服务器关闭时,客户机保存了关于服务器的一个完整的ARP登记项。如果我们继续试图与(已关闭的)服务器联系,过来20分钟以后,ARP将超时。最后,当服务器以另一个新的硬件地址重新启动。如果它没有发出一个免费ARP,旧的、不正确的ARP登记项仍然存在与客户机上。我们将无法和在新硬件地址上的服务器联系直到我们手工删除这个ARP登记项,或者在20分钟内停止与服务器联系的尝试。