地址解析协议 (ARP)

ARP(Address Resolution Protocol,地址解析协议)是根据IP地址获取数据链路层地址(MAC地址)的一个TCP/IP协议。ARP是IPv4中必不可少的一种协议,它的主要功能是:

将IP地址解析为MAC地址;维护IP地址与MAC地址的映射关系的缓存,即ARP表项;实现网段内重复IP地址的检测。请求过程:

ARP的工作原理

在发送数据前,设备会先查找ARP缓存表。如果缓存表中存在对方设备的ARP表项,则直接采用该表项中的MAC地址来封装帧,然后将帧发送出去。如果缓存表中不存在相应信息,则通过发送ARP Request报文来获得它。学习到的IP地址和MAC地址的映射关系会被放入ARP缓存表中存放一段时间。在有效期内(缺省:180s),设备可以直接从这个表中查找目的MAC地址来进行数据封装,而无需进行ARP查询。过了这段有效期,ARP表项会被自动删除。如果目标设备位于其他网络,则源设备会在ARP缓存表中查找网关的MAC地址。然后将数据发送给网关。最后网关再把数据转发给目的设备。主机1的ARP缓存表中不存在主机2的MAC地址,所以主机1会发送ARP Request来获取目的MAC地址。ARP Request报文封装在以太帧里。帧头中的源MAC地址为发送端主机1的MAC地址。此时,由于主机1不知道主机2的MAC地址,所以目的MAC地址为广播地址FF-FF-FF-FF-FF-FF。ARP Request报文中包含发送端MAC地址、发送端IP地址、目的端MAC地址、目的端IP地址,其中目的端MAC地址的值为0。ARP Request报文会在整个网络上传播,该网络中所有主机包括网关都会接收到此ARP Request报文。所有的主机接收到该ARP Request报文后,都会检查它的目的端IP地址字段与自身的IP地址是否匹配。如果不匹配,则该主机将不会响应该ARP Request报文。如果匹配,则该主机会将ARP请求报文中的发送端MAC地址和发送端IP地址信息记录到自己的ARP缓存表中,然后通过ARP Reply报文进行响应。主机2会向主机1回应ARP Reply报文。ARP Reply报文中的发送端IP地址是主机2自己的IP地址,目的端IP地址是主机1的IP地址,目的端MAC地址是主机1的MAC地址,发送端MAC地址是自己的MAC地址,同时操作类型被设置为Reply。ARP Reply报文通过单播传送。主机1收到ARP Reply以后,会检查ARP报文中目的端IP地址字段与自身的IP地址是否匹配。如果匹配,ARP报文中的发送端MAC地址和发送端IP地址会被记录到主机1的ARP缓存表中。

实验:

创建三台pc和一台交换机lsw1,pc1、pc2、pc3,连接在交换机lsw1上,首先将三台主机的IP地址和Mac地址进行配置,然后抓取交换机e0/0/2和e0/0/3两个接口的数据包,在pc1上对pc2进行ping测试,ping通后对e0/0/2和e0/0/3接口的数据包进行对比。

e0/0/2

e0/0/3

在pc1上将pc2、pc3都ping通,使用arp -a命令可以查看ARP缓存表

在交换机上使用display mac-address命令查看mac地址表

ARP在同网段和不同网段的工作过程

通常我们为了缩小广播域都会使用路由器在广播域之间

已上图为例:

pc1去解析pc2目标主机进行arp请求时,请求的是目的IP

pc1—>>pc2 同网段 —>>arp—>>目的IPpc1去解析pc3目的主机进行arp请求时,请求的是网关Mac

pc1—>>pc3 不同网段 —>>arp—>>网关Mac

ARP数据在PC1——路由器(R1)——PC2之间转发具体情况为:

PC1—R1:

源MAC:PC1的MAC地址

目标MAC:广播MAC地址

源IP:PC1的IP地址

目标IP:网关的IP地址

R1—PC2 :

源MAC:路由器的MAC地址

目标MAC:广播MAC地址

源IP:网关的IP地址

目标IP:PC2的IP地址

PC2—R1 :

源MAC:PC2的MAC地址

目标MAC:路由器的MAC地址

源IP:PC2的IP地址

目标IP:网关的IP地址

R1—PC1:

源MAC:路由器的MAC地址

目标MAC:PC1的MAC地址

源IP:网关的IP地址

目标IP:PC1的IP地址

R1:e0/0/1

R1:e0/0/0

免费ARP

免费 ARP(Gratuitous ARP)包是一种特殊的 ARP 请求,它并非期待得到 IP 对应的 MAC 地址,而是当主机启动的时候,发送一个 Gratuitous ARP 请求,即请求自己的 IP 地址的 MAC 地址。

免费 ARP 包的结构

免费 ARP 报文与普通 ARP 请求报文的区别在于报文中的目标 IP 地址。普通 ARP 报文中的目标 IP 地址是其他主机的 IP 地址;而免费 ARP 的请求报文中,目标 IP 地址是自己的 IP 地址。

免费 ARP 的作用

免费 ARP 数据包有以下 3 个作用:

该类型报文起到一个宣告作用。它以广播的形式将数据包发送出去,不需要得到回应,只为了告诉其他计算机自己的 IP 地址和 MAC 地址。可用于检测 IP 地址冲突。当一台主机发送了免费 ARP 请求报文后,如果收到了 ARP 响应报文,则说明网络内已经存在使用该 IP 地址的主机。可用于更新其他主机的 ARP 缓存表。如果该主机更换了网卡,而其他主机的 ARP 缓存表仍然保留着原来的 MAC 地址。这时,可以发送免费的 ARP 数据包。其他主机收到该数据包后,将更新 ARP 缓存表,将原来的 MAC 地址替换为新的 MAC 地址。

实验:

首先配置好路由器r1和r2的接口IP地址,然后使用 Wireshark 抓取r2的接口,进行抓包,将r2的接口IP地址改为r1的IP地址,ping该地址,打开wireshark进行数据包分析。

好文阅读

评论可见,请评论后查看内容,谢谢!!!
 您阅读本篇文章共花了: