IP分组在通过以太网发送时,由于以太网中的数据链路层设备并不识别IP地址,因此,IP分组必须先要封装成数据链路层的协议数据单元“帧”之后才能通过物理媒介进行传输。而帧从一个主机传送到以太网内的另一台主机,是根据48位的以太网地址(即网卡地址),而不是根据32位的IP地址来进行寻址的,因此,主机在发送帧之前需要将目标节点的IP地址转换成目标节点的MAC地址,而ARP就是一种专用于将IP地址映射到网卡的MAC地址的协议。假设主机A和B在同一个网段,主机A要向主机B发送信息,则ARP协议的工作原理如下:
步骤1:主机A首先查看自己的ARP表,确定其中是否包含有主机B对应的ARP表项。如果找到了对应的主机B的MAC地址,则主机A将对IP数据分组进行帧封装之后,直接利用ARP表中记录的主机B的MAC地址将帧转发给主机B。
步骤2:如果主机A在ARP表中找不到对应的主机B的MAC地址,则将缓存该分组,然后以广播方式向整个网段发送一个ARP请求报文(报文格式如图4.27所示),其中,该ARP请求报文中的源端IP和MAC地址为主机A的IP和MAC地址,目的端IP和MAC地址为目标主机B的IP址和全0的MAC地址。由于ARP请求报文是以广播的方式发送的,因此,该网段上的所有主机都会收到该ARP请求报文,但只有目标主机B才会对其进行处理。
图4.27 ARP/RARP请求与应答的报文格式
步骤3:主机B可通过比较自己的IP地址和ARP请求报文中的目标IP地址来确认自己是否为目标主机。当两者相同时,进行如下处理:将ARP请求报文中记录的主机A的IP和MAC地址存入到自己的ARP表中,然后,再以单播方式发送ARP响应报文(报文格式如图4.28所示)给主机A,其中,在ARP响应报文包含了主机B的IP和MAC地址。
步骤4:主机A在收到主机B回送的ARP响应报文之后,首先,将主机B的MAC地址加入到自己的ARP表中,然后,再将IP分组进行帧封装,并利用主机B的MAC地址将帧转发给主机B。
如图4.28所示,当主机A和B不在同一网段时,主机A将会首先向网关发出一个ARP请求报文,其中,该ARP请求报文中的目标IP地址为网关的IP地址。当A在收到了网关的ARP响应报文之后,即可获得网关的MAC地址。然后,主机A即可再将IP分组进行帧封装,并利用网关的MAC地址将帧转发给网关。如果网关的ARP表中有记录主机B的MAC地址的表项,则网关即可直接将IP分组进行帧封装,并利用主机B的MAC地址将帧转发给主机B。
图4.28 ARP工作原理
如果网关的ARP表中也没有记录主机B的MAC地址的表项,则网关会广播一个ARP请求报文,其中,该ARP请求报文中的目标IP地址为主机B的IP地址。网关收到了主机B 的ARP响应报文之后,即可获得主机B的MAC地址,然后,网关即可再将IP分组进行帧封装,并利用主机B的MAC地址将帧转发给主机B。
免责声明:以上内容源自网络,版权归原作者所有,如有侵犯您的原创版权请告知,我们将尽快删除相关内容。