ARP协议全称为Address Resolution Protocol,主要用于查询目标IP地址对应的MAC地址。在TCP/IP协议中,数据包是以MAC地址来进行路由寻址的,但是应用程序却是通过IP地址来进行寻址的,ARP协议就是将这两个地址进行映射的。
工作原理
在发送数据包之前,发送方需要知道目标IP地址对应的MAC地址。发送方首先会在自己的ARP高速缓存中查找目标IP地址是否存在相应的MAC地址映射,如果存在则直接发送,否则就会在局域网内广播ARP Request数据包,要求其他主机响应。接收到ARP Request数据包的主机会进行判断,如果该主机处 IP 地址与要映射的目标IP地址相同,则它将会发送 ARP Reply 消息回到请求主机的 ARP 缓存中,这样,ARP请求主机就可以通过这个缓存以及相应的MAC地址映射进行数据包转发和路由寻址了。
ARP请求和ARP应答数据包的格式
ARP请求和响应数据包都由若干个字段组成,以下为ARP请求和应答数据包的格式:
ARP请求数据包:
- 硬件类型:指ARP协议的工作环境,比如以太网的值为1
- 协议类型:指ARP协议映射的IP地址类型,比如IPv4的值为0X0800
- 硬件长度:指MAC地址的字节数,以太网的值为6
- 协议长度:指IP地址的字节数,IPv4的值为4
- 操作码:指该数据包是ARP请求还是ARP应答,ARP请求的值为1
- 源硬件地址:指请求主机的源MAC地址,一般情况下ARP请求和响应数据包都含有该字段
- 源协议地址:指请求主机的源IP地址,一般情况下ARP请求和响应数据包都含有该字段
- 目标硬件地址:值为以下16个0,因为该数据包是要广播到整个网络上的,ARP响应才会有目标MAC地址
- 目标协议地址:指要映射的目标IP地址
ARP应答数据包:
- 硬件类型、协议类型、硬件长度、协议长度、操作码和源硬件地址以及源协议地址与ARP请求数据包一致
- 目标硬件地址:指请求主机的源MAC地址
- 目标协议地址:指请求主机的源IP地址
安全问题
ARP协议是一种没有身份验证机制的协议,攻击者可以通过ARP欺骗攻击(ARP spoofing)来欺骗目标主机,将目标主机的流量引向攻击者处,进而窃取目标主机的敏感信息。此外,攻击者还可以创建虚假ARP缓存项,将自己PC、服务器、路由器中心控制的MAC地址替换为目标主机MAC,从而让目标主机无法正常收到或发送数据包,从而实现网络拒绝服务攻击。为了解决这些问题,需要实现一系列的ARP欺骗防御措施,比如静态ARP绑定、动态ARP缓存或者使用虚拟专用网络(VPN)等。
扫码咨询 领取资料