ARP协议

ARP


关于ARP地址解析协议,是我们通过IP地址可以获得MAC地址的一个协议,当我们在一个局域网进行通信的时候,所需要的条件就是必须有发送端和目的端两端的MAC地址。ARP协议的目的就是为了解决在局域网进行通信的时候只知道IP地址却不知道MAC地址的情况。

我们先来看一下MAC帧:
![enter description here][1]

从这个图中我们就可以看到MAC帧的具体的内容,所以我们在进行通信的时候当然必须要知道一个地址,就是目的地址,但是,在实际中我们通常都是已经知道一个主机的IP地址,进行IP地址之间的通信,所以为了解决这样的问题,我们提出了ARP地址解析协议。

ARP协议是网际层协议,目的是为了从网络层使用的IP地址解析出来在数据链路层使用的硬件地址。

接下来我们来看一下ARP数据报的格式,然后叙述一下ARP整个过程。
![enter description here][2]

在ARP数据报中需要强调一下的是:
硬件类型说的是与主机相连接的网络类型,1代表以太网。
协议类型说明是ipv4还是ipv6协议,不同的协议后续操作是不一样的。IP是0x0800
协议长度,这个主要就是不同协议当中的长度,ipv4是4字节长,ipv6是16字节长度。
硬件长度,说的是硬件地址的长度,也就是MAC帧的长度,也就是6字节。
然后看op,op就是操作,1代表arp请求,2代表arp应答。

有一个问题就是我们可以发现ARP数据报中会存有两份的源和目的的MAC地址,为什么这么做呢,其实首先我们会在数据链路层接受到ARP数据报的时候这个时候我们会取出MAC首部,然后交付上层,为了上层的操作,所以这个时候再上层所得到的报文当中又有了一份硬件地址和ip地址。

ARP过程


接下来我们来下一次ARP的完整过程,我们首先有两台主机H1和H2,当我们需要进行通信的时候,这个时候只是知道H1和H2的IP地址IP1和IP2,还有H1的MAC地址MAC1,但是无法知道H2的MAC地址,此时我们进行H1与H2通信,所以这个时候我们首先填充ARP数据报,此时的是请求ARP数据报,对目的地址全部填充1,也就是ffffffffffff,op为1,然后,由前主机以广播的形式发送到当前局域网。
![enter description here][3]

所以,当当前局域网当中的主机接受到这个广播的帧,会有两种情况,一种就是帧当中的IP2和自己不相符合,这样它们的操作就是丢弃这个帧,另外一种的IP地址和IP2符合,这个时候就来进行处理这个帧,此时,接受到请求报文的主机H2会发送一个应答ARP数据报给H1,这里ARP报文的发送端IP地址和发送端MAC地址,都是现在当前要发送应答报文的主机H2的IP2和MAC2,目的端IP地址和目的端MAC地址都当初发送请求报文的主机H1的IP1和MAC1。op现在为2,然后加一个以太网首部发送出去,当到达目的主机的时候,此时,首先取出以太网帧的首部,然后交给上层的ARP,上层的ARP进行处理,然后ARP可以从当中得到op,发现是应答报文,所以去看发送端的MAC地址,然后这样就得到了所需要进行通信的MAC地址。

![enter description here][4]

ARP高速缓存


另外需要注意的问题是ARP协议的实质上需要有一个ARP缓存,这个缓存来进行保存ip地址和MAC地址的映射关系,这样,就不需要进行多次的ARP请求了。

当然,当一个MAC地址被改变或者长时间不进行通信,此时又会有一个缓存需要更新的问题,当长时间的一个缓存表中的一个映射关系不进行通信,此时就删除它,防止缓存表会填满。这个时间在这里我们叫做生存时间,为每一个映射地址我们都会设置一个生存时间。默认情况下ARP缓存是20分钟一更新。

特别需要注意,ARP只是可以对于同一个局域网上的主机或路由器的IP地址和硬件地址的映射问题。
当面对的是不同主机之间,这个时候我们需要考虑路由器的作用。

在linux下,我们可以使用arp来查看
![enter description here][5]

使用arp -a可以查看可以显示主机和ip地址的对应表。也就是机器当中的arp缓存的信息。
![enter description here][6]

ARP欺骗攻击


ARP还有几个概念叫做ARP欺骗。
比如现在有A向C发送ARP请求,此时B解析到这份ARP请求,然后把自己伪装成主机C,填写一个不存在的MAC地址回复给A,A再将这个假的MAC地址与主机C的IP地址成对写进ARP缓存表当中,所以在这个C的这个条目过期之前,此时A会一直往假的MAC地址发送数据,这样一直就不会成功传输。这样,接受到数据的这个MAC地址的主机,就可以从接受到的数据获得到些有用的信息。
![enter description here][7]

ARP欺骗的防御


最理想的防制方法是网络内的每台电脑的ARP一律改用静态的方式,不过这在大型的网络是不可行的,因为需要经常更新每台电脑的ARP表。

或者可以使用一些软件来进行ARP的防护,例如DHCP snooping,网络设备可借由DHCP保留网络上各电脑的MAC地址,在伪造的ARP数据包发出时即可侦测到。

ARP欺骗亦有正当用途。其一是在一个需要登录的网络中,让未登录的电脑将其浏览网页强制转向到登录页面,以便登录后才可使用网络。另外有些设有备援机制的网络设备或服务器,亦需要利用ARP欺骗以在设备出现故障时将讯务导到备用的设备上。

RARP


RARP叫做逆地址解析协议,说完了ARP,其实你也就知道了RARP的通信原理,RARP我们进行操作的时候,这个时候我们知道两个MAC地址,所以在链路层上此时可以直接通信,然后通信过去得到IP地址,传回来就好了。
RARP协议广泛的应用于无盘工作站引导时获取IP地址。

RARP允许局域网的物理机器从网管服务器ARP表或者缓存上请求其IP地址

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值