作用:获取下一条的MAC地址
    在网络通讯时,源主机的应用程序知道目的主机的IP地址和端口号,却不知道目的主机的硬件地址,而数据包首先是被网卡接收到再去处理上层协议的,如果接收到的数据包的硬件地址与本机不符,则直接丢弃。因此在通讯前必须获得目的主机的硬件地址。ARP 协议就起到这个作用。源主机发出ARP请求,询问“IP 地址是192.168.0.1的主机的硬件地址是多少”,并将这个请求广播到本地网段(以太网帧首部的硬件地址填FF:FF:FF:FF表示广播),目的主机接收到广播的ARP请求,发现其中的IP地址与本机相符,则发送一个ARP应答数据包给源主机,将自己的硬件地址填写在应答包中。
    每台主机都维护一个ARP缓存表,可以用arp-a命令查看。缓存表中的表项有过期时间(一般为20分钟),如果20分钟内没有再次使用某个表项,则该表项失效,下次还要发ARP请求来获得目的主机的硬件地址。想一想,为什么表项要有过期时间而不是一直有效?
    image.png
    发送端以太网地址、发送端IP地址、目的以太地址、目的IP地址
    image.png
    一开始发送时不知道目的MAC:填充为00:00:00:00,当接收端收到的IP与自己的IP地址相同时,若接收端MAC为00:00:00:00,则将自己的MAC填充到接收端MAC,然后当接收端IP和自己的吻合时,说明收到回应,将源MAC取出来,则目的地址和源地址可以填了
    image.png
    image.png
    发送端以太网地址、发送端IP地址、目的以太地址、目的IP地址 每一条都在发生改变