为什么要用ARP?
主机发送信息时将包含目标IP地址的ARP请求广播到局域网络上的所有主机,并接收返回消息,以此确定目标的物理地址;收到返回消息后将该IP地址和物理地址存入本机ARP缓存中并保留一定时间,下次请求时直接查询ARP缓存以节约资源
举个例子
你去找某个小区找人(赵某),但是你不知道他的住址,于是你便找人就问赵某是住在哪里,于是你花了很久的时间才找到,他家的地址也被你记在你的脑海里,那你下次来找是不是只要根据上次他家的地址就可以找到他,不需要再到处问人赵某住在哪里,节约了时间成本。
相似的道理
在一个广播域中主机A访问主机B,因为不知道主机B的mac地址所以进行广播,知道主机B收到之后才将mac地址告诉你,呢主机A下次访问主机B就不需要广播了,既节省时间,又节省带宽资源。
它具体是如何工作呢?
如上图
主机A的IP地址为172.20.1.1,MAC地址为0A-11-22-33-44-01;
主机B的IP地址为172.20.1.2,MAC地址为08-00-20-74-CE-EC;
步骤1
当主机A要与主机B通信时,地址解析协议可以将主机B的IP地址(172.20.1.2)解析成主机B的MAC地址,但是主机A在ARP缓存中没有找到映射,它将询问172.20.1.2的硬件地址,从而将ARP请求帧广播到本地网络上的所有主机。源主机A的IP地址和MAC地址都包括在ARP请求中。本地网络上的每台主机都接收到ARP请求并且检查是否与自己的IP地址匹配。如果主机发现请求的IP地址与自己的IP地址不匹配,它将丢弃ARP请求。
步骤2
主机B确定ARP请求中的IP地址与自己的IP地址匹配,则将主机A的IP地址和MAC地址映射添加到本地ARP缓存中。
步骤3
主机B将包含其MAC地址的ARP回复消息直接发送回主机A。
步骤4
当主机A收到从主机B发来的ARP回复消息时,会用主机B的IP和MAC地址映射更新ARP缓存。
它的工作媒介?
报文
关于报文里包含的内容大致介绍一下:
硬件类型:
发送者的硬件接口类型,以太网的值为1;
协议类型:
发送者的高层协议类型,IP为0800(16进制)
硬件地址长度和协议长度:
代表硬件地址和高层协议地址的长度,
操作类型:
代表报文的类型,
ARP请求为1
ARP响应为2
RARP请求为3
RARP响应为4
扩展
代理ARP
主机A需要向主机B发送数据包,但是它没有配置缺省网关信息,因而也就不知道如何到达路由器。这时它可以向主机B发送一个ARP请求;本地路由器收到这一请求,并且路由器知道如何到达主机B的 网络,因此路由器将回复以上请求,其中把自己的数据链路标识符作为 ARP 回复数据包。事实上,路由器欺骗了本地的主机,让主机A认为路由器的接口就是连接主机B的接口。最终所有发向主机B的数据包都被送往路由器。
无故ARP和反向ARP
无故 ARP
也称免费ARP,主机使用自己的 IPv4 地址作为目标地址发送 ARP 请求。
作用:
(1)检查重复地址(如果收到ARP响应表明存在重复地址)。
(2)用于通告一个新的数据链路标识。当一个设备收到一个ARP请求时,发现ARP缓冲区中已有发送者的IP地址,则更新IP地址的MAC地址条目。
反向ARP
反向ARP是用于把物理地址(MAC地址)转换到对应的 IP 地址