3.2.2 ARP高速缓存
如果每一次通信都要发出ARP请求,那么将会占用大量的网络带宽,大大影响网络通信的效率。ARP高效运行的关键是由于每个主机上都有一个ARP高速缓存。这个高速缓存存放了最近Internet地址到硬件地址之间的映射记录。那么主机怎么获知这些地址呢?我们可以通过以下例子进行说明。假设主机A想向局域网中的主机B发送IP数据报,首先在其ARP高速缓存中查找有无B的IP地址,如有就可得知B的MAC地址,从而将其写入MAC帧中,然后通过局域网发出该帧数据。
如果主机A或B才入网,则在主机A的ARP高速缓存中就找不到主机B的IP地址项目。此时,主机A就会按以下步骤找出主机B的MAC地址。
图7:广播式寻找MAC地址
(1)主机A的ARP进程在本局域网广播发送一个ARP请求分组(格式参见下节)。如图7所示,ARP请求的内容是:“我的IP是223.1.2.1,我的网卡硬件地址是08-00-39-00-2F-C3。我想知道IP地址为223.1.2.2的主机之网卡硬件地址。”
(2)在该局域网上的所有主机都收到此ARP请求分组。
(3)主机B的ARP进程在ARP请求分组中匹配到自己的IP地址,就向主机A发送ARP响应分组(如图7所示),其中包含B的硬件地址。其内容是:“我的IP是223.1.2.2,硬件地址是0C-00-5A-21-A7-22。”其余的主机都将丢弃A的ARP请求分组。
图8:ARP响应
(4)主机A在收到B的ARP响应分组后,就在其ARP高速缓存中写入主机B的IP地址和硬件地址的映射。
考虑到网络中主机接入的不确定性,ARP为保存在高速缓存中的每一个映射地址项目都设置生存时间,凡超过生存时间的项目就从高速缓存中删除,重新广播ARP请求分组进行更新。也就是说每隔一段时间就要刷新ARP高速缓存。
那么,ARP高速缓存刷新的间隔时间应该是多少呢?太短会影响效率,太长则不足以动态反映网络中主机联网的状态。不同操作系统对此的设置是不相同的。在伯克利系统演变而来的UNIX系统中,ARP高速缓存中每一项的生存时间一般为3到20分钟,而在Windows系统中约为90秒左右。不同的系统相差的确如此之大。
3.2.3 ARP命令
我们可以是用arp命令察看和操作ARP高速缓存,在Windows或Unix中的用法都是相似的。在Windows中运行DOS控制台程序CMD.EXE,键入arp即可得到该命令的用法:
图9:windows中ARP命令窗
选项-a用来显示ARP高速缓存中的内容。不带参数时,arp –a将显示高速缓存中的所有项目;如果带IP地址参数,该命令将显示高速缓存中相应IP对应的地址映射,如arp –a 192.168.0.2;如果主机上配置了不止一块网卡,使用参数-N If_addr(If_addr为网卡的IP地址)还可以查看指定网卡在高速缓存中的所有项目,如arp –a –N 192.168.0.101。
选项-d用以删除ARP高速缓存中的某一项内容。不带参数的arp –d将删除ARP高速缓存中的所有项目,这也可以加上通配符*作为参数来实现;如果要删除指定IP对应的项目,可以把该IP作为命令的参数,如arp –d 192.168.0.2。
另外,可以通过选项-s来增加高速缓存中的内容,如:
arp –s 192.168.0.2 00-0C-11-3F-00-1B
新增加的内容是静态的,它没有超时值,不会被ARP应答更改,除非机器重新启动。这种特性可以让我们在网关服务器上进行IP地址与MAC地址绑定,只有绑定的机器才能够通过网关服务器代理接入Internet。
使用ARP命令还可以作为判断网络中是否感染了ARP病毒的一个参考。用户不可能熟悉网络中每一台机器的MAC地址,但应该熟悉用来上网的网关服务器的MAC地址,如果网络时断时续,请用arp –a 网关IP 进行查看,如果显示的是一个陌生的MAC地址,很可能网络中存在ARP病毒。可用静态ARP项来对抗ARP病毒。 基于FPGA的以太网通信数据传输的设计与实现(8):http://www.751com.cn/tongxin/lunwen_6604.html