您的位置:首页 > 产品设计 > UI/UE

gratuitous ARP(免费Arp)

2011-08-18 18:23 155 查看
当主机启动的时候,将发送一个免费的arp请求,即请求自己的ip地址的mac地址。

此免费arp请求有两个作用:

1、通告整个lan说ip地址XXX是我的,对应的mac是XXX,他没有期望有人会应答这个请求

2、另外一个目的就是检测ip地址冲突,如果有主机的ip和我的相同,他将回一个arp响应,当我接受到这个响应的时候,我知道lan内有一个主机的ip与我相同,于是我报一个ip地址冲突的错误

值 得注意的是:lan中的路由器始终不会发现ip地址冲突的问题,每次收到该ip的arp报文之后,只是简单的将arp表修改。因为目前的主机的实现都很文 明,即当检测到lan中有一个同ip的主机存在之后是先封闭自己而不是继续竞争,所以一开始连接成功的主机会一直成功。

-------------------------------------------------------------------

我们可以看到的另一个ARP特性称作免费ARP(gratuitousARP)。它是指主机发送ARP查找自己的IP地址。通常,它发生在系统引导期间进 行接口配置的时候。在互联网中,如果我们引导主机bsdi并在主机sun上运行tcpdump命令,可以看到如图4-7所示的分组。



图4-7免费ARP的例子

(我们用-n选项运行t c p d u m p命令,打印出点分十进制的地址,而不是主机名)。对于A R P请求中的各字段来说,发送端的协议地址和目的端的协议
址是一致的:即主机b s d i的地址1 4 0 . 2 5 2 . 1 3 . 3 5。另外,以太网报头中的源地址0 : 0 : c 0 : 6 f : 2 d : 4 0,正如t c p d u m p命令显示的那样,等于发送端的硬件地址(见图4 - 4)。

免费A R P可以有两个方面的作用:

1) 一个主机可以通过它来确定另一个主机是否设置了相同的I P地址。主机b s d i并不希望对此请求有一个回答。但是,如果收到一个回答,那么就会在终端日志上产生一个错误消息“以太网地址:a : b : c : d : e : f发送来重复的I P地址”。这样就可以警告系统管理员,某个系统有不正确的设置。

2) 如果发送免费A R P的主机正好改变了硬件地址(很可能是主机关机了,并换了一块接口卡,然后重新启动),那么这个分组就可以使其他主机高速缓存中旧的硬件地址进行相应的更新。一个比较著名的A R P协议事 实[Plummer
1982]是,如果主机收到某个I P地址的A R P请求,而且它已经在接收者的高速缓存中,那么就要用A R P请求中的发送端硬件地址(如以太网地址)对高速缓存中相应的内容进行更新。主机接收到任何A R P请求都要完成这个操作(A R P 请求是在网上广播的,因此每次发送A R P请求时网络上的所有主机都要这样做)。

文献[ B h i d e、E l n o z a h y和M o rgan 1991] 中有一个应用例子,通过发送含有备份硬件地址和故障服务器的I P地址的免费A R P请求,使得备份文件服务器可以顺利地接替故障服务器进行工作。这使得所有目的地为故障服务器的报文都被送到备份服务器那里,客户程序不用关心原来的服务 器是否出了故障。

不幸的是,作者却反对这个做法,因为这取决于所有不同类型的客户端都要有正确的ARP协议实现。他们显然碰到过客户端的ARP协议实现与规范不一致的情况。通过检查作者所在子网上的所有系统可以发现,SunOS
4.1.3和4 . 4 B S D在引导时都发送免费ARP,但是SVR4却没有这样做。
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: