ARP代理也称作混合ARP(promiscuous ARP)或ARP 出租(ARP hack) 。这些名字来自于ARP代理的其他用途:通过两个物理网络之间的路由器可以互相隐藏物理网络 。在这种情况下,两个物理网络可以使用相同的网络号,只要把中间的路由器设置成一个ARP代理,以响应一个网络到另一个网络主机的ARP请求 。这种技术在过去用来隐藏一组在不同物理电缆上运行旧版TCP/IP的主机 。分开这些旧主机有两个共同的理由,其一是它们不能处理子网划分,其二是它们使用旧的广播地址(所有比特值为0的主机号,而不是目前使用的所有比特值为1的主机号) 。
4.7 免费ARP
我们可以看到的另一个ARP特性称作免费ARP (gratuitous ARP) 。它是指主机发送ARP查找自己的IP地址 。通常,它发生在系统引导期间进行接口配置的时候 。
在互联网中,假如我们引导主机bsdi并在主机sun上运行TCP dump命令,可以看到如图4 - 7所示的分组 。
(我们用-n选项运行TCP dump命令,打印出点分十进制的地址,而不是主机名) 。对于ARP请求中的各字段来说,发送端的协议地址和目的端的协议地址是一致的:即主机bsdi的地址140.252.113.35 。另外,以太网报头中的源地址0:0:c0:6f:2d:40,正如TCP dump命令显示的那样,等于发送端的硬件地址(见图4-4) 。
免费ARP可以有两个方面的作用:
1) 一个主机可以通过它来确定另一个主机是否设置了相同的IP地址 。主机bsdi并不希望对此请求有一个回答 。但是,假如收到一个回答,那么就会在终端日志上产生一个错误消息“以太网地址:a:b:c:d:e:f发送来重复的IP地址” 。这样就可以警告系统治理员,某个系统有不正确的设置 。
2) 假如发送免费ARP的主机正好改变了硬件地址(很可能是主机关机了,并换了一块接口卡,然后重新启动),那么这个分组就可以使其他主机高速缓存中旧的硬件地址进行相应的更新 。一个比较闻名的ARP协议事实[Plummer 1982]是,假如主机收到某个IP地址的ARP请求,而且它已经在接收者的高速缓存中,那么就要用ARP请求中的发送端硬件地址(如以太网地址)对高速缓存中相应的内容进行更新 。主机接收到任何ARP请求都要完成这个操作( ARP请求是在网上广播的,因此每次发送ARP请求时网络上的所有主机都要这样做) 。
文献[ Bhide、Elnozahy和Morgan 1991]中有一个应用例子,通过发送含有备份硬件地址和故障服务器的IP地址的免费ARP请求,使得备份文件服务器可以顺利地接替故障服务器进行工作 。这使得所有目的地为故障服务器的报文都被送到备份服务器那里,客户程序不用关心原来的服务器是否出了故障 。
不幸的是,作者却反对这个做法,因为这取决于所有不同类型的客户端都要有正确的ARP协议实现 。他们显然碰到过客户端的ARP协议实现与规范不一致的情况 。
通过检查作者所在子网上的所有系统可以发现,SunOS 4.1.3和4.4 BSD在引导时都发送免费ARP,但是SVR4却没有这样做 。
4.8 arp命令
我们已经用过这个命令及参数-a来显示ARP高速缓存中的所有内容 。这里介绍其他参数的功能 。
超级用户可以用选项- d来删除ARP高速缓存中的某一项内容(这个命令格式可以在运行一些例子之前使用,以让我们看清楚ARP的交换过程) 。
;;;;另外,可以通过选项- s来增加高速缓存中的内容 。这个参数需要主机名和以太网地址:对应于主机名的IP地址和以太网地址被增加到高速缓存中 。新增加的内容是永久性的(比如,它没有超时值),除非在命令行的末尾附上要害字temp 。
位于命令行末尾的要害字pub和-s选项一起,可以使系统起着主机ARP代理的作用 。系统将回答与主机名对应的IP地址的ARP请求,并以指定的以太网地址作为应答 。假如广播的地址是系统本身,那么系统就为指定的主机名起着委托ARP代理的作用 。
推荐阅读
- TCP协议的通讯方式
- winxp系统中自动获取ip地址具体操作方法
- 第三层IP协议和路由功能的介绍上
- 我国发展MPLS 技术的策略
- 苹果id三个地址怎么填
- 二 解析中国网通MPLS VPN
- IPv4今日地址行为
- 反向地址转换协议
- SNMP:简单网络管理协议
- SLP:服务定位协议