一、基本概念与作用

1.基本概念:ARP协议是地址解析协议(Address Resolution Protocol)是通过解析IP地址得到MAC地址的,是一个在网络协议包中极其重要的网络传输协议。

2.为什么需要ARP协议:在网络访问层中,同一局域网中的一台主机要和另一台主机进行通信,需要通过MAC地址进行定位,然后才能进行数据包的发送。而在网络层和传输层中,计算机之间是通过IP地址定位目标主机,对应的数据报文只包含目标主机的IP地址,而没有MAC地址。因此,在发送之前需要根据IP地址获取MAC地址,然后才能将数据包发送到正确的目标主机,而这个获取过程是通过ARP协议完成的。

二、ARP数据包格式




iOS 开发获取Mac 地址_Source


注释:

Hradware Type:硬件类型,以太网

Protocol Type:表示三层协议的类型,一般是IP

Hradware Length:硬件长度

Protocol Length:协议长度

Operation Code:ARP报文的类型,Request/Reply

Source Hardware Address:源MAC地址

Source Protocol Address:源IP地址

Destination Hardware Address:目的MAC地址

Destination Protocol Address:目的IP地址

ARP报文不能穿越路由器,不能转发到其他广播域

三、工作原理

1. 现在主机A去访问主机C,需要先获得C的MAC地址


iOS 开发获取Mac 地址_iOS 开发获取Mac 地址_02


2. 主机A需要发送ARP请求获取主机C的MAC地址此时主机A会发送一个广播包,源MAC/源IP设为自己,目的IP为要去访问的IP地址,目的MAC为F,类型请求


iOS 开发获取Mac 地址_缓存_03


此时B和C都会收到这ARP请求,B收到发现IP地址不是自己就会丢弃,C收到后发现是自己就会将自己的MAC地址填进去,回复给A


iOS 开发获取Mac 地址_iOS 开发获取Mac 地址_04


此时主机A收到后将信息放入自己的缓存表,同时在C收到后A的请求时,会将A的信息放入自己的缓存表


iOS 开发获取Mac 地址_IP_05


四、特性

1、 ARP代理:

同一网段,不同物理网络上的计算机之间,可以ARP代理实现互相通信,类似于网关的作用


iOS 开发获取Mac 地址_iOS 开发获取Mac 地址_06


2. 免费ARP:

用于检测IP地址是否冲突,将自己的IP地址当作目的IP地址,通过组播MAC地址发送出去


iOS 开发获取Mac 地址_IP_07


3. ARP欺骗:

当lan里面有A、B、C三台主机时,A、B泛应了ARP请求,此时C作为攻击者,向B发送ARP请求,将SIP设为A的IP,B收到后更新ARP缓存表,之后向A发送报文时,就会发送给C