ARP(Address Resolution Protocol)地址解析协议,工作在OSI模型的数据链路层,在以太网中,网络设备之间互相通信是用MAC地址而不是IP地址。
ARP协议:已知IP地址来请求MAC地址。
RARP协议(Reverse ARP):已知MAC地址来请求IP地址。
GARP协议(Gratuitous ARP):又叫无辜ARP或者免费ARP,作用是用来检测IP地址是否冲突。
Proxy ARP(代理 ARP)协议:当主机没有配置网关的时候,但是又想和其他网段通信,需要其他设备以欺骗的形式请求MAC地址。
下面通过一个小实验,来给大家演示这四种ARP的具体作用(拓扑图如下):
01 GARP
打开PC的抓包,抓取PC本地网卡的包,然后手动给PC配置一个静态的IP地址为192.168.1.1/24(不配置网关),然后看抓包,截图如下:
一问一答,两个ARP的数据包(准确来说是GARP),先解释一下:
第一个说:
我的IP地址是192.168.1.1,我的MAC地址是cc:00:22:d0:00::00,我想知道有谁的IP地址是192.168.1.1吗?并且我是以广播的形式(二层帧头全F的数据仅限制在本网段内)
第二个说:
我的IP地址是192.168.1.1,我的MAC地址是cc:00:22:d0:00::00。
很明显,他在自言自语,自问自答。说明地址没有冲突,如果说这个网段内有其他人给我进行了回复,那就代表IP地址冲突了,OK,这就是GARP的作用(检测地址是否冲突)。
02 ARP
下面给R2也配置一个IP地址:192.168.1.10/24,然后我用PC去pingR2,看抓包截图:
一问一答,两个ARP的数据包(准确来说就是ARP),先解释一下:
第一个说:
我的IP地址是192.168.1.1,我的MAC地址是cc:00:22:d0:00::00,我想知道192.168.1.10对应的MAC地址是多少?
第二个说:
我是192.168.1.10,我的MAC地址是cc:01:22:d0:00:00。
通过这种方式,PC就学习到了同网段内另一个IP地址所对应的MAC地址,以后通信的时候就直接通过MAC地址通信了。