小黑最近是和我卯上了,快成小二黑了。前端时间临时去外面工作半天,却报“无法清除ARP缓存”的错误不能上网,折腾了好久。
地址解析协议缓存(ARP,Address ResolutionProtocol)是一个高速缓存,缓存里面存储的是每一台计算机都有的IP地址和硬件地址的映射表。打开命令行窗口,敲入arp命令,可以看得很清楚:
arp
Displays and modifies the IP-to-Physical address translationtables used by address resolution protocol (ARP).
ARP -s inet_addr eth_addr [if_addr]
ARP -d inet_addr [if_addr]
ARP -a [inet_addr] [-N if_addr]
ARP协议是IP协议使用的一个重要协议,解决的是网际层和物理硬件之间的对应问题。每一台计算机在获得了IP地址后(以前的一篇博文讲了一些静态配置IP和动态分配IP背景http://blog.sina.com.cn/s/blog_53742e780100gpfo.html),需要使用计算机的硬件地址,即通常所说的MAC地址或物理地址或实际地址把IP报文封装成MAC帧,IP报文使用的是IP地址,MAC帧使用的是硬件地址,那么就涉及到地址解析的问题。例如小黑在局域网1中的IP地址是192.X.X.X、硬件地址是00-1F-16-15-44-1E,ARP缓存就是建立起这两个地址之间的映射表,计算机要进行网络通信的时候先查表,而不用每一次网络通信都进行解析。这个映射表存在高速缓存中就是为了减少每一次查询的时间,提高上网的速度。如果小黑到了局域网2中,分配给它的IP地址是10.X.X.X,而因为某种原因在ARP缓存中的IP地址没有更新,IP地址仍然还是192.X.X.X,那么就造成了MAC帧发送错误而导致不能上网。
既然真正上网是用的硬件地址,那么为什么还要发明IP地址?因为硬件层地址体系各不相同,江湖尚未一统,所以必须引入分层的概念,用新的一层来屏蔽了目前实现上的很复杂的细节,加入新层之后又复杂了怎么办,再加一层。计算机网络因此被分为了7层,计算机软件的三层结构、N层结构也大行其道。IP层发挥了很重要的屏蔽作用,为讨论问题统一了基础和概念。
如何清除ARP缓存呢?
1、重启计算机,最好关电后再重启。利用重启和掉电来强制刷新ARP缓存,没有查找ARP缓存的机制,难道和BIOS一样?
2、使用arp命令的-d开关,可使用通配符。-d Deletes the host specified by inet_addr.inet_addr may bewildcarded with * to delete allhosts;
3、手工静态配置IP地址和DNS服务器。