前言
网络设备有数据要发送给另一台网络设备时,必须要知道对方的网络层地址(即IP地址)。IP地址由网络层来提供,但是仅有IP地址是不够的,IP数据报文必须封装成帧才能通过数据链路进行发送。数据帧必须要包含目的MAC地址,因此发送端还必须获取到目的MAC地址。通过目的IP地址而获取目的MAC地址的过程是由ARP(Address Resolution Protocol)协议来实现的。
ARP数据包格式
这里需要强调的是 hardware type一般是指以太网
注意:ARP报文不能穿越路由器,不能被转发到其他广播域。
ARP工作过程
以下图为例,主机A需要访问主机C。
1.主机A发送一个数据包给主机C之前,首先要获取主机C的MAC地址。
但此时我们用arp -a查看arp表。发现没有数据,于是我们的第一个包就需要发一个广播包请求主机C mac地址
2.主级A发送一个请求包,请求包一般都是广播的数据帧,所以目的mac地址为全F,源ip地址,源mac地址也都包含的ARP数据包里。
3.主级C收到广播包之后,将包中在这里源头ip、源mac地址记录到arp表中,并回复一个单播包给主级A,该包源ip源mac都是是主级C的。
ARP代理
位于不同网络的网络设备在不配置网关的情况下,能够通过ARP代理实现相互通信。需要了解的是,这样目的ip地址所对应的mac地址是作为ARP代理的路由器的mac地址
免费ARP
当主机A配置好ip地址的时候,主机会向外发送一个免费ARP,源ip、目的ip都是主机A,源mac地址也是主机A,目的mac全F,作为广播帧发送出去,当收到的mac地址和源mac地址不一样的时候,就说明该网络中存在相同ip的主机。
总结
1.网络设备在什么情况下会发送ARP request?
知道对方ip地址,但不知道对方mac地址,即arp表里没有对方mac地址的时候。
2.网络设备什么时候会产生免费ARP?
通常,它发生在系统引导期间进行接口配置的时候。即刚刚配置好ip后,不知道网络中是否是否存在相同的ip地址的时候。
来源:CSDN
作者:shark_辣椒
链接:https://blog.csdn.net/shark_chili3007/article/details/104024712