ARP协议工作原理

转载请注明来源:https://www.cnblogs.com/hookjc/

ARP数据包根据接收对象不同,可分为两种:
    1. 广播包(Broadcast)。广播包目的MAC地址为FF-FF-FF-FF-FF-FF,交换机设备接收到广播包后,会把它转发给局域网内的所有主机。
    2. 非广播包(Non-Broadcast)。非广播包后只有指定的主机才能接收到。

   ARP数据包根据功能不同,也可以分为两种:
    1. ARP请求包(ARP Request)。ARP请求包的作用是用于获取局域网内某IP对应的MAC地址。
    2. ARP回复包(ARP Reply)。ARP回复包的作用是告知别的主机,本机的IP地址和MAC是什么。

    广播的一般都是ARP请求包,非广播的一般都是ARP回复包。

    假设局域网内有以下两台主机,主机名、IP地址、MAC地址分别如下:
        主机名   IP地址          MAC地址
        A        192.168.0.1     AA-AA-AA-AA-AA-AA
        B        192.168.0.2     BB-BB-BB-BB-BB-BB

    当主机A需要与主机B进行通讯时,它会先查一下本机的ARP缓存中,有没有主机B的MAC地址。如果有就可以直接通讯。如果没有,主机A就需要通过ARP协议来获取主机B的MAC地址,具体做法相当于主机A向局域网内所有主机喊一嗓子:“喂~谁是192.168.0.2?我是192.168.0.1,我的MAC地址是AA-AA-AA-AA-AA-AA
。你的MAC地址是什么,快告诉我”,这时候主机A发的数据包类型为:广播-请求。

    当主机B接收到来自主机A的“ARP广播-请求”数据包后,它会先把主机A的IP地址和MAC地址对应关系保存/更新到本机的ARP缓存表中,然后它会给主机A发送一个“ARP非广播-回复”数据包,其作用相当于告诉主机A:“嘿,我是192.168.0.2,我的MAC地址是BB-BB-BB-BB-BB-BB”。当主机A接收到主机B的回复后,它会把主机B的IP地址和MAC地址对应关系保存/更新到本机的ARP缓存表中,之后主机A和B就可以进行通讯了。

    从上述局域网主机通讯过程可以看出,主机在两种情况下会保存、更新本机的ARP缓存表,
    1. 接收到“ARP广播-请求”包时
    2. 接收到“ARP非广播-回复”包时

来源:python脚本自动迁移

posted @ 2020-06-23 18:12  jiangcheng_15  阅读(1414)  评论(0编辑  收藏  举报