地址解析协议 (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—>>目的IP
- pc1去解析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进行数据包分析。
来源地址:https://blog.csdn.net/ZYH2597816991/article/details/130305335