IP数据包常通过以太网发送。以太网设备并不识别32位IP地址:它们是以48位以太网地址传输以太网数据包的。因此,IP驱动器必须把IP目的地址转换成以太网网目的地址。在这两种地址之间存在着某种静态的或算法的映射,常常需要查看一张表。地址解析协议(Address Resolution Protocol,ARP)就是用来确定这些映象的协议。
ARP工作时,送出一个含有所希望的IP地址的以太网广播数据包。目的地主机,或另一个代表该主机的系统,以一个含有IP和以太网地址对的数据包作为应答。发送者将这个地址对高速缓存起来,以节约不必要的ARP通信。如果有一个不被信任的节点对本地网络具有写访问许可权,那么也会有某种风险。这样一台机器可以发布虚假的ARP报文并将所有通信都转向它自己,然后它就可以扮演某些机器,或者顺便对数据流进行简单的修改。ARP机制常常是自动起作用的。在特别安全的网络上, ARP映射可以用固件,并且具有自动抑制协议达到防止干扰的目的。
图1 以太网上的ARP报文格式
图1是一个用作IP到以太网地址转换的ARP报文的例子。在图中每一行为32位,也就是4个八位组表示,在以后的图中,我们也将遵循这一方式。
硬件类型字段指明了发送方想知道的硬件接口类型,以太网的值为1。协议类型字段指明了发送方提供的高层协议类型,IP为0806(16进制)。硬件地址长度和协议长度指明了硬件地址和高层协议地址的长度,这样ARP报文就可以在任意硬件和任意协议的网络中使用。操作字段用来表示这个报文的目的,ARP请求为1,ARP响应为2,RARP请求为3,RARP响应为4。
当发出ARP请求时,发送方填好发送方首部和发送方IP地址,还要填写目标IP地址。当目标机器收到这个ARP广播包时,就会在响应报文中填上自己的48位主机地址。
二、模拟环境:ARP捕包分析
比较简单,所以没有画拓朴图。
思路:使用两台带WEB管理的路由(A和B),设同一IP(192。168。22。1),用一台PC(192。168。22。5)接入其中一台,打开WEB管理介面。然后立即切换到另一台路由(就是野蛮的把网线拔下换到别一台),再接着打开WEB管理,看会有什么现像发生。
(1)接入A,打开WEB管理。捕包如下:
由上图我们可以看到,再进行通讯之前,会先进行ARP请求,然后再是HTTP连接的建立。上面所捕的目标MAC地址是FF:FF:FF:FF:FF:FF,目标IP是:192。168。22。1。其意义就是这是一个广播包,主机192。168。22。5希望得到192。168。22。1的MAC地址。
三: ARP地址表的作用,清空ARP缓存的作用
(2)立即把网线拔下接入到B,再打开WEB管理。可是我却发现,立即就能访问。也就是说没有出现刚才所说,需要清空ARP缓存的情况。怎么回事?看下面我们捕包的截图:
上图蓝色部分是A的包,为了明显区分,我把B上的WEB访问端口改了下,这样我们就看到是褐色的了,并被omnipeek识别为使用了代理。我们发现蓝色和褐色之间,并没有ARP的请求与获取(SMB不用管),也就是说没有做任何动作,就可以访问B了。为什么呢?换了一个设备MAC地址应该是不同的啊!大家看上面有个蓝色选中区域,是一个从Draytek:27:9A:25 发出来的请求192。168。22。6的ARP请求包,而这个MAC地址的IP是192。168。22。1(即是我们设置给AB路由的IP),请大家看上图的解码部分。由此我们便非常清楚了,在我们进行HTTP的连接之前,路由器已经把自己的MAC地下送过来了(因为俺在B上把syslog服务器设给了192。168。22。6,当时这台机器不在线),所以我们没有任何感觉,就可以正常打开B的WEB管理了。
目的没有达到,我们得继续。
(3)我们再把网线拔出来,重新接回A,再立即访问A的WEB管理介面。终于不能打开了。看捕包截图:
由上图我们看到,我们发出的HTTP请求没有得到回应,于是,我立即打开CMD,输入ARP –D ,清空ARP缓存。接着就看到出现新的ARP请求,完了后HTTP也可以访问了。
目标完成!
总结:
局域网的通信是基于MAC地址的,而更多的程序都是基于IP地址,这就要有IP到MAC的映射了。一般情况,当机器在完成了映射的学习之后,都会在缓存中保存一段时间,所以这个时候更换了网络设备,也就更换了MAC地址,而映射却没有更新,便造成了不能访问的假像。而我们只须把这缓存清空让机器重新学习一次即可。
本文来源:中国网管学院 作者:佚名