ARP是 Address Resolution Protocol(地址解析协议)的缩写,属于 TCP/IP 协议簇,用于根据IP 地址获取主机MAC 地址。
相关协议还有 RARP、代理 ARP,NDP 用于在 IPv6 中代替地址解析协议等。
原理
- 主机发送信息时将包含目标IP 地址的ARP请求广播到局域网络上的所有主机,并接收返回消息,以此确定目标的MAC 地址;
- 收到返回消息后将该IP 地址和MAC 地址存入本机ARP 缓存中并保留一定时间,下次请求时直接查询ARP 缓存以节约资源。
方式
局域网络上的主机可以自主发送ARP应答报文,其他主机收到ARP 报文时不会检测该报文的真实性就会将其记入本机ARP 缓存ARP 报文
| 硬件类型 | | 协议类型 | | —- | —- | —- | | 硬件地址长度 | 协议长度 | 操作类型 | | 发送方硬件地址(0-3 字节) | | | | 发送方硬件地址(4-5 字节) | | 发送方IP地址(0-1 字节) | | 发送方 IP 地址(2-3 字节) | | 目标硬件地址(0-1 字节) | | 目标硬件地址(2-5 字节) | | | | 目标 IP 地址(0-3 字节) | | |
ARP 缓存
ARP 缓存是个用来储存IP 地址和MAC 地址的缓冲区,其本质就是一个IP 地址→MAC 地址的对应表,表中每一个条目分别记录了网络上其他主机的IP 地址及与之对应的MAC 地址。
应用
ARP 命令
用于查询本机ARP 缓存中IP 地址和MAC 地址对应关系,还可以添加或删除静态对应关系等。
arp -a/arp –g
查看ARP 缓存中的所有记录,-a
被视为 all,即全部,-g
一直是 UNIX 平台上使用,Windows 两者皆可使用
arp -a IP
多个网卡设备上,arp -a
加上指定网卡的IP 地址,只显示与该网卡相关的ARP 缓存
arp -s IP MAC
arp -d IP
ARP 欺骗
地址解析协议是建立在网络中各个主机互相信任的基础上的,攻击者可以向某一主机发送伪造的ARP 报文,使其发送的信息无法到达预期的主机或到达错误的主机,这就构成了一个ARP 欺骗。
防御措施
路由器(网关)上做IP 地址→MAC 地址静态绑定