网络地址到物理地址的映射(ARP)

网络的互连首先要解决的问题就是网络地址到物理地址的映射,以太网接口分配的是一个48位的物理地址,而IP地址却只有32位,因此无法将它编码到IP地址中。有人建议可以构建一个中央数据库存储所有网络中的网络地址与物理地址对应组,需要时直接去访问这个中央数据库即可。可这个中央数据库的维护又是个更大的难题,更让人难以接受的是它的安全性。聪明的TCP/IP协议设计人员找到了一种创造性的方法。这个办法不需要维护什么中央数据库,是个动态绑定地址的底层协议,即地址转换协议ARP(Address Resolution Protocol);

一句话概括ARP的特点:ARP允许主机在只知道同一物理网络上一个目的站IP地址的情况下,找到目的主机的物理地址;

工作过程

ARP工作原理解析

主机A的IP地址为192.168.1.1,MAC地址为0A-11-22-33-44-01;
主机B的IP地址为192.168.1.2,MAC地址为0A-11-22-33-44-02;
当主机A要与主机B通信时,地址解析协议可以将主机B的IP地址(192.168.1.2)解析成主机B的MAC地址,以下为工作流程:
第1步:根据主机A上的路由表内容,IP确定用于访问主机B的转发IP地址是192.168.1.2。然后A主机在自己的本地ARP缓存中检查主机B的匹配MAC地址。
第2步:如果主机A在ARP缓存中没有找到映射,它将询问192.168.1.2的硬件地址,从而将ARP请求帧广播到本地网络上的所有主机。源主机A的IP地址和MAC地址都包括在ARP请求中。本地网络上的每台主机都接收到ARP请求并且检查是否与自己的IP地址匹配。如果主机发现请求的IP地址与自己的IP地址不匹配,它将丢弃ARP请求。
第3步:主机B确定ARP请求中的IP地址与自己的IP地址匹配,则将主机A的IP地址和MAC地址映射添加到本地ARP缓存中。
第4步:主机B将包含其MAC地址的ARP回复消息直接发送回主机A。
第5步:主机A收到主机B发来的ARP回复消息时,用主机B的IP和MAC地址映射更新ARP缓存。本机缓存是有生存期的,生存期结束后,再次重复上面的过程。主机B的MAC地址一旦确定,主机A就能向主机B发送IP通信了。

工作要点:

1.高速缓存:为了降低通信的费用,使用ARP的计算机维护着一个高速缓存,存放最近获得的IP到物理地址的绑定。

2.软状态:信息会在没有任何警告的情况下变得失效,假设有两台计算机A和B,都连接到同一个以太网上,A已经发出了一个ARP请求,B做出了应答。再假设应答后B出现故障,计算机A不会接到任何关于该故障的通告,A将继续把分组发送给B。为了适应软状态,更正错误的责任归于信息的拥有着。一般情况下,实现软状态的协议使用了计时器,当计时器超时后则删除状态信息。

ARP命令:

我的Linux主机下arp命令的显示结果:

arp命令的主要参数:

ARP欺骗

地址解析协议是建立在网络中各个主机互相信任的基础上的,它的诞生使得网络能够更加高效的运行,但其本身也存在缺陷:
ARP地址转换表是依赖于计算机中高速缓冲存储器动态更新的,而高速缓冲存储器的更新是受到更新周期的限制的,只保存最近使用的地址的映射关系表项,这使得攻击者有了可乘之机,可以在高速缓冲存储器更新表项之前修改地址转换表,实现攻击。ARP请求为广播形式发送的,网络上的主机可以自主发送ARP应答消息,并且当其他主机收到应答报文时不会检测该报文的真实性就将其记录在本地的MAC地址转换表,这样攻击者就可以向目标主机发送伪ARP应答报文,从而篡改本地的MAC地址表。ARP欺骗可以导致目标计算机与网关通信失败,更会导致通信重定向,所有的数据都会通过攻击者的机器,因此存在极大的安全隐患。

NDP

地址解析协议是IPV4中必不可少的协议,但在IPV6中将不再存在地址解析协议。在IPv6中,地址解析协议的功能将由NDP(邻居发现协议,Neighbor Discovery Protocol)实现,它使用一系列IPv6控制信息报文(  ICMPv6)来实现相邻节点(同一链路上的节点)的交互管理,并在一个子网中保持网络层地址和数据链路层地址之间的映射。邻居发现协议中定义了5种类型的信息:路由器宣告、路由器请求、路由重定向、邻居请求和邻居宣告。与ARP相比,NDP可以实现路由器发现、前缀发现、参数发现、地址自动配置、地址解析(代替ARP和RARP)、下一跳确定、邻居不可达检测、重复地址检测、重定向等更多功能。
NDP与ARP的区别
  • IPv4中地址解析协议是独立的协议,负责IP地址到MAC地址的转换,对不同的数据链路层协议要定义不同的地址解析协议。IPv6中NDP包含了ARP的功能,且运行于因特网控制信息协议ICMPv6上,更具有一般性,包括更多的内容,而且适用于各种数据链路层协议;
  • 地址解析协议以及ICMPv4路由器发现和ICMPv4重定向报文基于广播,而NDP的邻居发现报文基于高效的组播和单播。
posted @ 2014-04-03 11:33  thinker-lj  Views(2391)  Comments(0Edit  收藏  举报