ARP协议

定义

  1. 地址解析协议 ARP(Address Resolution Protocol) 是用来将 IP 地址解析为 MAC 地址的协议。
  2. 反向地址解析协议 RARP(Reverse Address Resolution Protocol) 是用来将 MAC 地址解析为 IP 地址的协议。
  3. ARP 属于三层(网络层) 协议

基本原理

1、ARP报文格式
ARP协议

硬件类型(Hardware Type):表示硬件地址的类型。对于以太网,该类型的值为“1”。

协议地址类型(Protocol Type): 映射的协议地址类型。 对于 IP 地址, 该值为 0x0800。

硬件地址长度(Hardware Length): 硬件地址长度。 对于 ARP 请求或应答来说, 该值为 6。

协议地址长度(Protocol Length): 对于 ARP 请求或应答来说, 该值为 4。

操作码(OP):

  • 1 ARP请求
  • 2 ARP应答
  • 3 RARP请求
  • 4 RARP应答

2、ARP 地址解析过程(动态 ARP)
ARP地址解析过程
当需要通信的两台主机处于同一网段时, 如图 1 中的 Host_1 和 Host_3, Host_1 要向Host_3 发送数据。
首先, Host_1 会查找自己本地缓存的 ARP 表, 确定是否包含 Host_3 对应的 ARP 表项。如果 Host_1 在 ARP 表中找到了 Host_3 对应的 MAC 地址, 则 Host_1 直接利用 ARP 表中的 MAC 地址, 对数据报文进行帧封装, 并将数据报文发送给 Host_3。 如果 Host_1 在 ARP 表中找不到 Host_3 对应的 MAC 地址, 则先缓存该数据报文, 并以广播方式发送一个 ARP 请求报文。 如图所示, OP 字段为 1 表示该报文为 ARP 请求报文, ARP 请求报文中的源 MAC 地址和源 IP 地址为 Host_1 的 MAC 地址和 IP 地址, 目的 MAC 地址为全 0 的 MAC 地址, 目的 IP 地址为 Host_3 的 IP 地址。

Router_1 收到 ARP 请求报文后, 将该 ARP 请求报文在同一广播域内转发。同一广播域内的主机 Host_2 和 Host_3 都能接收到该 ARP 请求报文, 但只有被请求的主机(即 Host_3) 会对该 ARP 请求报文进行处理。 Host_3 比较自己的 IP 地址和 ARP 请求报文中的目的 IP 地址, 当两者相同时进行如下处理: 将 ARP 请求报文中的源 IP 地址和源 MAC 地址(即 Host_1 的 IP 地址和 MAC 地址) 存入自己的 ARP 表中。 之后以单播方式发送ARP 应答报文给 Host_1, ARP 应答报文内容如图所示, OP 字段为 2 表示该报文为 ARP应答报文, 源 MAC 地址和源 IP 地址为 Host_3 的 MAC 地址和 IP 地址, 目的 MAC 地址和目的 IP 地址为 Host_1 的 MAC 地址和 IP 地址。Router_1 收到 ARP 应答报文后, 将该 ARP 应答报文转发给 Host_1。 Host_1 收到 ARP应答报文后, 将 Host_3 的 MAC 地址加入到自己的 ARP 表中以用于后续报文的转发, 同时
将数据报文进行帧封装, 并将数据报文发送给 Host_3。

当需要通信的两台主机处于不同网段时, 如图 1 中的 Host_1 和 Host_4, Host_1 上已经配置缺省网关, Host_1 首先会发送 ARP 请求报文, 请求网关 Router 的 IP 地址对应的 MAC地址。 Host_1 收到 ARP 应答报文后, 将数据报文封装并发给网关, 再由网关将数据报文发送给目的主机 Host_4。 Host_1 学习网关 IP 地址对应的 ARP 表项的过程, 以及网关设备学习Host_4 的 IP 地址对应的 ARP 表项的过程与上述同网段主机 Host_1 和 Host_3 之间进行 ARP地址解析的过程类似, 不再赘述。

3、老化机制

高速缓存

  1. 减少广播
  2. 提高网络运行效率:因为减少了广播
  3. 存放ip到mac地址的映射

老化超时时间

  1. 设置定时器。当定时器到达老化超时时间时,会进行探测。探测失败,删除该条目;成功,保留
  2. 因为存在时延,所以地址解析错误的问题并没有完全消除

老化探测次数

在将一条动态 ARP 表项老化之前, 系统先进行探测, 如果超过设置的探测次数后探测的目标主机仍没有应答, 则此 ARP 表项将被删除

老化探测模式

  1. ARP 表项老化之前, 接口会发送 ARP 老化探测报文。 老化探测报文可以是单播报文, 也可以是广播报文。 设备只在最后一次发送 ARP 老化探测报文是广播模式, 其余均为单播模式发送。
  2. 当对端设备的 IP 地址不变化而 MAC 地址频繁更新时, 建议使用广播模式发送 ARP 老化探测报文。
  3. 当对端设备 MAC 地址不变, 当前网络带宽资源特别紧缺, 且 ARP 表项的老化时间设置的比较小时, 建议使用单播模式发送 ARP 老化探测报文。
  4. 当其他厂商设备与华为设备互联时, 其他厂商设备接收到目的 MAC 地址为广播地址的 ARP 老化探测报文后, 若 ARP 表项中已存在华为设备的 IP 地址与 MAC 地址映射, 则丢弃该广播 ARP 老化探测报文。 华为设备由于收不到该探测报文的应答报文, 而删除对应的 ARP 表项, 导致网络侧过来的流量不通。 这种特殊情况下华为设备需要配置成以单播方式发送 ARP老化探测报文, 其他厂商设备需要配置成可以响应该单播探测报文。

类型

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

说明 ARP 表项出接口是隧道的时候,当隧道状态发生变化,ARP 表项不联动感知。ARP 表项靠老化删除。

2、静态ARP
有网络管理员手动配置的IP地址和MAC地址之间的映射关系。即不会老化也不会被动态ARP表项覆盖。
静态 ARP 表项可以限制本端设备和指定 IP 地址的对端设备通信时只使用指定的 MAC 地址, 此时攻击报文无法修改本端设备的 ARP 表中 IP 地址和 MAC 地址的映射关系, 从而保护了本端设备和对端设备间的正常通信。
一般在网关设备上配置静态 ARP 表项。

posted @ 2021-02-19 16:49  zhengyuanyuan  阅读(765)  评论(0)    收藏  举报