ARP(Address Resolution Protocol,地址解析协议)是一个位于TCP/IP协议栈中的低层协议,负责将某个IP地址解析成对应的MAC地址.
ARP的工作原理。
在每台主机中都有一张ARP表,它记录着主机的IP地址和MAC地址的对应关系
1) 如果主机A想发送数据给主机B,主机A首先会检查自己的ARP缓存表,查看是否有主机B的IP地址和MAC地址的对应关系,如果有,则会将主机B的MAC地址作为源MAC地址封装到数据帧中。如果没有,主机A则会发送一个ARP请求信息,请求的目标IP地址是主机B的IP地址,目标MAC地址是MAC地址的广播帧(即FF-FF-FF-FF-FF-FF),源IP地址和MAC地址是主机A的IP地址和MAC地址。
2) 当交换机接受到此数据帧之后,发现此数据帧是广播帧,因此,会将此数据帧从非接收的所有接口发送出去。
3) 当主机B接受到此数据帧后,会校对IP地址是否是自己的,并将主机A的IP地址和MAC地址的对应关系记录到自己的ARP缓存表中,同时会发送一个ARP应答,其中包括自己的MAC地址。
4) 主机A在收到这个回应的数据帧之后,在自己的ARP缓存表中记录主机B的IP地址和MAC地址的对应关系。而此时交换机已经学习到了主机A和主机B的MAC地址了。
windows/linux下可以通过命令行中输入"arp -a"查看本机的ARP缓存表,"arp -d"删除本机的ARP缓存表;
主机A 想向主机B通信,知道主机B的IP地址,但是不知到主机B的MAC地址,主机A发送一个ARP request packet,DA为broadcast,包含了192.168.0.2,“who has 192.168.0.2? tell 192.168.0.1 ”
同一网段的所有主机都会收到ARP request包(广播), 当主机B 发现ARP request包中的IP地址和自己一样时,知道了主机A想和自己通信,就会向主机A发一个ARP response 包,ARP response包中包含了主机B的MAC地址,这样主机A就知道了主机B的MAC地址;
ARP只能在同一网段,不能跨网段;
ARP 帧格式