地址解析协议,即ARP协议(address resolution protocol),是根据IP地址获取物理地址的一个TCP/IP协议。
工作原理:
主机发送信息时将包含目标IP地址的ARP请求广播到网络上的所有主机,并接受返回信息,一次来确定目标的物理地址,收到的返回信息后将该IP地址和物理地址存入本机的 ARP缓存表中并保留一定的时间,下次请求时直接查询ARP缓存表可以节省一定的资源。
这是ARP地址解析协议的请求报文,图中的广播地址意味着数据链路上的所有设备豆浆收到该帧,并且要检查帧内封装的数据包。但是除了目标机可以识别此数据包外,其他所有设备都会选择丢弃该数据包。之后目标机将向源地址发送ARP响应数据包,进行提供它的Mac地址的操作。
数据包内容解析:
- 硬件类型(Hardware Type):指定了硬件的类型
编号 | 硬件类型 |
---|---|
1 | 以太网 |
3 | X.25 |
4 | proteon ProNET token ring |
6 | IEEE 802 网络 |
7 | AECnet |
11 | Apple localtalk |
14 | SMDS |
15 | 帧中继 |
16 | 异步传输模式(ATM) |
17 | 高速数据链路控制(HDLC) |
18 | 光纤信道 |
19 | 异步传输模式(ATM) |
20 | 串行链路 |
- 协议类型(protocol type):指定了发送者映射到数据链路标识符到的网络层协议的类型;IP对应0X0800
- 硬件地址长度(hardware address length):指定了数据链路标识符的长度,单位是八位组。Mac地址的长度为6
- 协议地址长度(protocol address length):指定了网络层地址的长度,单位是八位组。IPv4地址的长度为4
- 操作(operation):指明了一个数据包是(1)ARP请求还是(2)ARP响应。或者是其他:(3)反向ARP请求(4)反向ARP响应(8)反转ARP请求(9)反转ARP响应
- 最后20个八位组是发送者和苗木表地址的数据链路标识符和IPv4地址
ARP欺骗
地址解析协议是建立在网络中各个主机互相信任的基础上的,网络上的主机可以自主发送ARP应答消息,其他主机收到应答报文时不会检测该报文的真实性就会将其记入本机ARP缓存;由此攻击者就可以向某一主机发送伪ARP应答报文,使其发送的信息无法到达预期的主机或到达错误的主机,这就构成了一个ARP欺骗。
代理ARP
代理ARP也被叫做混杂ARP,代理ARP被路由器作为向主机表明自身可用的一种手段,同时在IOS系统中,缺省情况下代理ARP功能是打开的,当然也可以在每个接口上使用命令no ip proxy-arp关闭此功能
无故ARP
主机偶尔会用自己的IPv4地址作为目标地址发送ARP请求。这种ARP北城为无故ARP,主要用途为: - 无故ARP可以用于检查重复地址。一台设备可以向自己的IPv4地址发送ARP请求,如果收到ARP响应则表明存在重复地址
- 无故ARP还可以用于通告一个新的数据链路标识符。当一台设备收到一个ARP请求,如果ARP高速缓冲中已有发送者的IPv4地址,那么与此IPv4地址相对应的硬件地址将会被发送者新的硬件地址所更新。这种无故ARP用途正是基于此事实。
- 某个子网内运行热备份路由器协议(HSRP协议)的路由器如果从其他路由器变成了主路由器,它就会发送一个无故ARP来更新该子网上主机的ARP缓存
许多IP实现中都没有无故ARP功能,并在IOS系统中缺省情况下是关闭的,但是可以通过命令ip gratuitous-arps激活它
反向ARP
代替映射硬件地址到已知IPv4地址,反向ARP(RARP)可以实现IPv4地址到已知硬件地址的映射。
RARP在很大程度上正在被动动态主机配置协议(DHCP)和自举协议(BOOTP)的扩展协议所替代,不同于RARP,这两种协议都可以提供IPv4地址以外的更多信息,而且还可以跨越本地数据链路。