ARP技术介绍

来源:互联网 发布:即时通讯软件开发方案 编辑:程序博客网 时间:2024/05/18 20:04

ARP作用

ARP(Address Resolution Protocol)是将IP 地址解析为以太网MAC 地址(或称物理地址)的协议。在局域网中,当主机或其它网络设备有数据要发送给另一个主机或设备时,它必须知道对方的网络层地址(即IP 地址)。但是仅仅有IP 地址是不够的,因为IP 数据报文必须封装成帧才能通过物理网络发送,因此发送站还必须有接收站的物理地址,所以需要一个从IP 地址到物理地址的映射。APR 就是实现这个功能的协议。

ARP报文结构


硬件类型:表示硬件地址的类型。它的值为 1 表示以太网地址;

  • 协议类型:表示要映射的协议地址类型。它的值为 0x0800 即表示IP 地址;
  • 硬件地址长度和协议地址长度分别指出硬件地址和协议地址的长度,以字节为单位。对于以太网上IP 地址的ARP 请求或应答来说,它们的值分别为6 和4;
  • 操作类型(OP):1 表示ARP 请求,2 表示ARP 应答;
  • 发送端 MAC 地址:发送方设备的硬件地址;
  • 发送端 IP 地址:发送方设备的IP 地址;
  • 目标 MAC 地址:接收方设备的硬件地址。
  • 目标 IP 地址:接收方设备的IP 地址。
ARP地址解析过程
假设主机A和B在同一个网段,主机A要向主机B发送信息。如下图所示,具体的地址解析过程如下:
(1) 主机A 首先查看自己的ARP 表,确定其中是否包含有主机B 对应的ARP 表项。如果找到了对应的MAC 地址,则主机A 直接利用ARP 表中的MAC 地址,对IP 数据包进行帧封装,并将数据包发送给主机B。
(2) 如果主机A 在ARP 表中找不到对应的MAC 地址,则将缓存该数据报文,然后以广播方式发送一个ARP 请求报文。ARP 请求报文中的发送端IP 地址和发送端MAC 地址为主机A 的IP地址和MAC 地址,目标IP 地址和目标MAC 地址为主机B 的IP 地址和全0 的MAC 地址。由于ARP 请求报文以广播方式发送,该网段上的所有主机都可以接收到该请求,但只有被请求的主机(即主机B)会对该请求进行处理。
(3) 主机B 比较自己的IP 地址和ARP 请求报文中的目标IP 地址,当两者相同时进行如下处理:将ARP 请求报文中的发送端(即主机A)的IP 地址和MAC 地址存入自己的ARP 表中。之后以单播方式发送ARP 响应报文给主机A,其中包含了自己的MAC 地址。
(4) 主机A 收到ARP 响应报文后,将主机B 的MAC 地址加入到自己的ARP 表中以用于后续报文的转发,同时将IP 数据包进行封装后发送出去。

当主机 A 和主机B 不在同一网段时,主机A 就会先向网关发出ARP 请求,ARP 请求报文中的目标IP 地址为网关的IP 地址。当主机A 从收到的响应报文中获得网关的MAC 地址后,将报文封装并发给网关。如果网关没有主机B 的ARP表项,网关会广播ARP 请求,目标IP 地址为主机B 的IP 地址,当网关从收到的响应报文中获得主机B 的MAC 地址后,就可以将报文发给主机B;如果网关已经有主机B 的ARP 表项,网关直接把报文发给主机B。

ARP表

设备通过 ARP 解析到目的MAC 地址后,将会在自己的ARP 表中增加IP 地址到MAC 地址的映射表项,以用于后续到同一目的地报文的转发。ARP 表项分为动态ARP 表项和静态ARP 表项。

动态 ARP 表项

动态 ARP 表项由ARP 协议通过ARP 报文自动生成和维护,可以被老化,可以被新的ARP 报文更
新,可以被静态ARP 表项覆盖。当到达老化时间、接口down 时会删除相应的动态ARP 表项。

静态ARP表项

静态 ARP 表项通过手工配置和维护,不会被老化,不会被动态ARP 表项覆盖。

配置静态 ARP 表项可以增加通信的安全性。静态ARP 表项可限制和指定IP 地址的设备通信时只使用指定的MAC 地址,此时攻击报文无法修改此表项的IP 地址和MAC 地址的映射关系,从而保护了本设备和指定设备间的正常通信。
静态 ARP 表项分为短静态ARP 表项和长静态ARP 表项。

  • 在配置长静态 ARP 表项时,除了配置IP 地址和MAC 地址项外,还必须配置该ARP 表项所在VLAN 和出接口。长静态ARP 表项可以直接用于报文转发。
  • 在配置短静态 ARP 表项时,只需要配置IP 地址和MAC 地址项。如果出接口是三层以太网接口,短静态ARP 表项可以直接用于报文转发;如果出接口是VLAN 虚接口,短静态ARP 表项不能直接用于报文转发,当要发送IP 数据包时,先发送ARP 请求报文,如果收到的响应报文中的源IP 地址和源MAC 地址与所配置的IP 地址和MAC 地址相同,则将接收ARP 响应报文的接口加入该静态ARP 表项中,之后就可以用于IP 数据包的转发。
代理ARP
如果ARP 请求是从一个网络的主机发往同一网段却不在同一物理网络上的另一台主机,那么连接它们的具有代理ARP 功能的设备就可以回答该请求,这个过程称作代理ARP(Proxy ARP)。代理 ARP 功能屏蔽了分离的物理网络这一事实,使用户使用起来,好像在同一个物理网络上。
代理ARP 分为普通代理ARP 和本地代理ARP,二者的应用场景有所区别:
  • 普通代理 ARP 的应用环境为:想要互通的主机分别连接到设备的不同三层接口上,且这些主机不在同一个广播域中。
  • 本地代理 ARP 的应用环境为:想要互通的主机连接到设备的同一个三层接口上,且这些主机不在同一个广播

普通代理 ARP

处于同一网段内的主机,当连接到设备的不同三层接口时,可以利用设备的代理ARP 功能,通过三层转发实现互通。
代理ARP的典型应用环境如下图所示。设备Router通过两个三层接口Ethernet1/1 和Ethernet1/2 连接两个网络,两个三层接口的IP地址不在同一个网段,接口地址分别为192.168.10.99/24、192.168.20.99/24。但是两个网络内的主机Host A和Host B的地址通过掩码的控制,既与相连设备的接口地址在同一网段,同时二者也处于同一个网段。、


在这种组网情况下,当 Host A 需要与Host B 通信时,由于目的IP 地址与本机的IP 地址为同一网段,因此Host A 会直接发出请求Host B 硬件地址的ARP 请求。但是,此时的两台主机处于不同的广播域中,Host B 无法收到Host A 的ARP 请求报文,当然也就无法应答。
通过在 Router 上启用代理ARP 功能,可以解决此问题。启用代理ARP 后,Router 可以应答HostA 的ARP 请求。同时,Router 相当于Host B 的代理,把从其他主机发送过来的报文转发给它。
代理 ARP 的优点是,它可以只被应用在一个设备上(此时该设备的作用相当于网关),不会影响到网络中其他设备的路由表。代理ARP 功能可以在IP 主机没有配置缺省网关或者IP 主机没有任何路由能力的情况下使用。

本地代理 ARP

本地代理ARP的应用场景如下图所示。Host A和Host B属于同一个VLAN 2,但它们分别连接到被二层隔离的端口Ethernet1/3 和Ethernet1/1 上,通过在Router上启用本地代理ARP功能,可以实现Host A和Host B的三层互通。


本地代理 ARP 可以在下列三种情况下实现主机之间的三层互通:

  • 想要互通的主机分别连接到同一个 VLAN 中的不同二层隔离端口下;
  • 使能 Super VLAN 功能后,想要互通的主机属于不同的Sub VLAN;
  • 使能 Isolate-user-vlan 功能后,想要互通的主机属于不同的Secondary VLAN




0 0
原创粉丝点击