ARP协议

什么是ARP?

ARP(地址解析协议),其基本功能为透过目标设备的IP地址,查询目标设备的MAC地址,以保证通信的顺利进行

ARP流程

同网段情况

  1. 主机A首先查看自己的ARP表,确定其中是否包含有主机B对应的ARP表项。如果找到了对应的MAC地址,则主机A直接利用ARP表中的MAC地址,对IP数据包进行帧封装,并将数据包发送给主机B。
  2. 如果主机A在ARP表中找不到对应的MAC地址,则将缓存该数据报文,然后以广播方式发送一个ARP请求报文。ARP请求报文中的发送端IP地址和发送端MAC地址为主机A的IP地址和MAC地址,目标IP地址和目标MAC地址为主机B的IP地址和全0的MAC地址。由于ARP请求报文以广播方式发送,该网段上的所有主机都可以接收到该请求,但只有被请求的主机(即主机B)会对该请求进行处理。
  3. 主机B比较自己的IP地址和ARP请求报文中的目标IP地址,当两者相同时进行如下处理:将ARP请求报文中的发送端(即主机A)的IP地址和MAC地址存入自己的ARP表中。之后以单播方式发送ARP响应报文给主机A,其中包含了自己的MAC地址。
  4. 主机A收到ARP响应报文后,将主机B的MAC地址加入到自己的ARP表中以用于后续报文的转发,同时将IP数据包进行封装后发送出去。

不同网段情况

不同网段的主机通信时,主机会封装网关(通常是路由器)的mac地址,然后主机将数据发送给路由器,后续路由进行路由转发,通过arp解析目标地址的mac地址,然后将数据包送达目的地。具体过程分析如下:

  1. 主机A查询网关的MAC地址
  2. 主机A将数据包封装主机A的IP地址网关的MAC地址进行发送
  3. 路由器收到数据包,检查目的IP地址,发现不是给自己的。然后ARP查询主机B的MAC地址,然后添加到路由MAC地址表中,封装自己的MAC为源MAC,主机B的MAC为目的MAC,发送给主机B。

总结

  • 同网段情况下,主机A直接在局域网内广播寻找主机B的MAC地址
  • 不同网段情况下,主机A将报文先封装上主机A的IP和路由器的MAC,发送给路由器,路由器再进行广播寻找主机B的MAC地址。最后
    • 源IP:主机A的IP
    • 源MAC: A所在局域网路由器的MAC
    • 目的IP:主机B的IP
    • 目的MAC:主机B的MAC