ARP地址解析原理

摘自:《深入理解计算机网络》 王达著 机械工业出版社
相关知识链接:
1. IPV4数据报头部格式请点击这里
2. IPv6数据报头部格式请点击这里
3. IPv4数据报的封装与解封装请点击这里
4. IPv4数据报的分段与重组请点击这里
5. ARP协议报文格式及ARP表

ARP地址解析原理


ARP地址解析原理_第1张图片

在上图中,现假设主机A和B在同一个网段(均位于192.168.1.0/24网段) ,主机A要向主机B发送信息。主机A和主机B的IP地址和MAC地址均在图中已有标识,此时主机A已知道主机B的IP地址,要想获得主机B的MAC地址,棘突的地址解析流程如下。

同一网段的ARP地址解析流程

  1. 主机A首先查看自己的ARP表(它是一个IP地址与MAC地址的映射表),确定其中是否包含有主机B的IP地址和对应的MAC地址。如果找到了对应的MAC地址,则主机A直接利用ARP表中的MAC地址对IP数据包进行帧封装,并将数据包发送给主机B。
  2. 如果主机A在ARP表中找不到对应的MAC地址,则先缓存该数据报文,然后以广播方式(目的MAC地址为广播地址——FFFFFF,任意网段的节点都可以接受到)发送一个ARP请求报文。ARP请求报文中的发送端(源)IP地址和发送端MAC地址分别为主机A的IP地址(192.168.1.1)和MAC地址(0002-6779-0F4C),目的IP地址和目的MAC地址为主机B的IP地址(192.168.1.2)和全0的MAC地址。因为ARP请求报文是以广播方式发送,所以该网段上的所有主机都可以接收到该请求包,但只有其IP地址与目的IP地址一致的主机B才会对该请求进行处理。
  3. 主机B将ARP请求报文中的发送端(即主机A)的IP地址和MAC地址存入自己的ARP表中。然后以单播方式向主机A发送一个ARP相应报文,应答报文中就包含了自己的MAC地址,也就是原来在请求报文中要请求的目的MAC地址。
  4. 主机A收到来自主机B的ARP响应报文之后,将主机B的MAC地址加入到自己的ARP表中以用于后续报文的转发,同时将原来缓存的IP数据包再次修改(在目的MAC地址字段填上主机B的MAC地址)后发送出去。

不同网段的ARP地址解析流程

  1. 如果主机A不知道网关的MAC地址(也就是主机A的ARP表中没有网关对应的MAC地址表项),则主机A先在本网段中发出一个ARP请求广播,ARP请求报文中的目的IP地址为网关的IP地址,代表其目的就是想获得网关的MAC地址。如果主机A已经知道网关的MAC地址,则略过此步。
  2. 网关收到ARP广播包后同样会向主机A发回一个ARP应答包。当主机A收到的应答包中获得网关的MAC地址后,在主机A向主机B发送的原报文的目的MAC地址字段填上网关的MAC地址后发给网关。
  3. 如果网关的ARP表中已有主机B对应的MAC地址,则网关直接将在来自主机A的报文中的目的MAC地址字段填上主机B的MAC地址后转发给B。
  4. 如果网关ARP表中没有主机B的MAC地址,网关会再次向主机B所在的网段发送ARP广播请求,此时目的IP地址为主机B的IP地址,当网关从收到来自主机B的应答报文中获得主机B的MAC地址后,就可以将主机A发来的报文重新再目的MAC地址字段填上主机B的MAC地址后发送给B。

你可能感兴趣的:(计算机网络)