其他分享
首页 > 其他分享> > 「网工小白必备」零基础最详细的网络基础ARP协议

「网工小白必备」零基础最详细的网络基础ARP协议

作者:互联网

【温馨提示】需要资料或者需要进群交流划到最底部

  1. 网络层
    ARP 是什么
    ARP 协议的全称是 Address Resolution Protocol(地址解析协议),它是一个通过用于实现从 IP 地址到 MAC 地址的映射,即询问目标 IP 对应的 MAC 地址 的一种协议。ARP 协议在 IPv4 中极其重要。

注意: ARP只用于IPv4 协议中,IPv6协议使用的是Neighbor

Discovery Protocol,译为邻居发现协议,它被纳入ICMPv6 中。

简而言之,ARP 就是一种解决地址问题的协议,它以 IP 地址为线索,定位下一个应该接收数据分包的主机 MAC 地址。如果目标主机不在同一个链路上,那么会查找下一跳路由器的 MAC 地址。

1.1.2. ARP的基本概念

Address Resolution Protocol,地址解析协议

通过对方的IP地址去解析对方的MAC地址

1.1.3. ARP的报文

ARP报文格式
在这里插入图片描述

硬件类型:标识硬件地址的类型,值为1表示以太网地址

协议类型:表示要映射的协议地址类相关。0x0080表示IP地址类型

硬件地址长度和协议地址长度,对于以太网上的IP地址的ARP请求或应答来说,他们的值分别为6和4

操作类型(op):1表示ARP请求,2表示ARP应答,3表示RARP请求,4表示进行RARP应答

发送方的硬件地址:发送方设备的硬件地址

发送方的协议地址:发送方设备IP地址

目标硬件地址:接收方设备硬件地址

目标协议地址:接收方设备IP地址

ARP请求报文
在这里插入图片描述

ARP应答报文

在这里插入图片描述

1.1.4. ARP地址解析过程

1、假设主机A和B在同一个网段,主机A要向主机B发送信息:

在这里插入图片描述

(1) 主机 A 首先查看自己的 ARP 表,确定其中是否包含有主机 B 对应的 ARP 表项。如果找到了

对应的 MAC 地址,则主机 A 直接利用 ARP 表中的 MAC 地址,对 IP 数据报进行帧封装,并

将 IP 数据报发送给主机 B。

(2) 如果主机 A 在 ARP 表中找不到对应的 MAC 地址,则将缓存该 IP 数据报,然后以广播方式发

送一个 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 数据报进行封装后发送出去。

2、当主机 A 和主机 B 不在同一网段时,主机 A 就会先向网关发出 ARP 请求,ARP 请求报文中的目

标IP 地址为网关的 IP 地址。当主机 A 从收到的响应报文中获得网关的 MAC 地址后,将报文封装并发

给网关。如果网关没有主机 B 的 ARP 表项,网关会广播 ARP 请求,目标 IP 地址为主机 B 的 IP 地

址,当网关从收到的响应报文中获得主机 B 的 MAC 地址后,就可以将报文发给主机 B;如果网关

已经有主机 B 的 ARP 表项,网关直接把报文发给主机 B。

1.1.5. 免费ARP

免费ARP的概念

免费ARP指主机发送ARP查找自己的IP地址,通常发生在系统引导期间进行接口配置时,与标准ARP的区别就是免费ARP将目的IP地址封装为自己的IP地址,即向网络中请求自己的MAC地址

免费ARP的作用

检测地址冲突

Ÿ 正常情况下发送免费ARP请求不会收到ARP应答,如果收到一个ARP应答,则说明网络中存在与本机相同的IP地址的主机,发生了地址冲突

更新其他主机高速缓存中旧的硬件地址

Ÿ 如果发送免费ARP的主机正好改变了硬件地址,如更换了接口卡

Ÿ 其他主机接收到这个ARP请求的时候,发现自己的ARP高速缓存表中存在对应的IP地址,但是MAC地址不匹配,那么就需要利用接收到的ARP请求来更新本地的ARP高速缓存表项

网关利用免费ARP防止ARP攻击

Ÿ 有些网关设备在一定的时间间隔内向网络主动发送免费的ARP报文,让网络内的其他主机更新ARP表项中的网关MAC地址信息,以达到防止或缓解ARP攻击的效果

利用免费ARP进行ARP攻击

ARP协议并不只在发送了ARP请求才接收ARP应答,计算机只要收到ARP应答数据包,就会使用应答包中的IP和MAC地址对本地的ARP缓存进行更新

主机可以虚构免费ARP应答,将ARP的源MAC设置为错误的MAC地址,并把这个虚假的免费ARP应答发送到网络中,那么所有接收到这个免费ARP应答的主机都会更新本地ARP表项中相应IP地址对应的MAC地址

更新成功后,这些主机的数据报文就会被转发到错误的MAC地址,从而实现了ARP欺骗

在这里插入图片描述

1.1.6. 代理ARP

代理ARP

如果这两个主机不在同一个网络内, 被3层设备隔离了, 怎么通信呢?

在这里插入图片描述

目的IP地址与本机的IP地址位于不同网络, 由于主机A没有配置网关,所以它将会以广播形式发送ARP Request报文,请求主机B的MAC地址。但是,广播报文无法被路由器转发,所以主机B无法收到主机A的ARP请求报文,当然也就无法应答。

在路由器上启用代理ARP功能,就可以解决这个问题。

启用代理ARP后, 主机A解析网关MAC 地址过程:

1、主机A发送arp 请求网关MAC: 在电脑主机要先配置网关地址,主机A给主机B发送数据,发现是不同网段的数据通信,而我本地是没有这个关于B的ARP映射关系的,就会发送一个arp请求报文,解析网关MAC地址,源IP和源MAC地址都是主机A,目的IP是网关IP地址,目的MAC地址是全0。

2、网关回复自己的MAC 地址:网关收到这个arp请求报文后, 检查目的主机是否可达,可达,就会把自己的MAC地址以arp reply报文回复给主机A,目的主机不可达就不回复。

3:主机A 给主机B 发送数据:主机A收到这个arp应答报文就会把网关MAC和网关的IP地址添加进arp表,A要给主机B发送数据,需要先解析B的MAC地址,发送一个arp请求报文,源IP 和源MAC是A的信息,目的IP地址是B的IP地址,目的MAC是网关MAC。

4: 网关收到数据包后的处理:网关收到这样的请求,会查找路由表,如果存在主机B的路由表项,路由器将会使用自己的G0/0/0接口的MAC地址来回应该ARP request。主机A收到ARP reply后,将以路由器的G0/0/0接口MAC地址作为目的MAC地址进行数据转发。

为什么需要代理ARP

先要了解,路由器的重要功能之一就是把局域网的广播报限制在该网段内,阻止其扩散,否则会造成广播风暴

ARP请求是广播报,他询问的对象如果在同一个局域网内,就会收到ARP应答。如果询问对象不在一个局域网内如何处理?路由器就提供了代理ARP为这个问题提供了解决方案

代理ARP的工作机制

在这里插入图片描述

两台主机A和B处于同一网段但不同的广播段(不在同一物理网络)时,主机A发送ARP请求主机B的MAC地址时,因为路由器不转发广播报的原因,ARP请求只能达到路由器。

如果路由器使用了ARP代理功能,并知道主机B属于它连接的网络,那么路由器就用自己接口MAC地址代替主机B的MAC地址来对主机A进行ARP应答。主机A接收ARP应答,但并不知道代理ARP的存在

代理ARP的优缺点

优点

代理ARP能在不影响路由表的情况下添加一个新的Router,使主网对该主机变得透明化。

一般代理ARP应该使用在主机没有配置默认网关或没有任何路由策略的网络上

缺点

从工作过程可以看到,这其实是一种ARP欺骗

通过两个物理网络之间的路由器的代理ARP功能其实互相隐藏了物理网络,这导致无法对网络拓扑进行网络概括

代理ARP增加了使用它的那段网段的ARP流量,主机需要更大的ARP缓存空间,也不会为不使用ARP进行地址解析的网络工作

当然我还有很多整理好的资料文档和视频文件,【点击这里】获得更多资料文档 往期教学视频,主要也是想给新手小白少走点弯路。

标签:ARP,网关,主机,报文,基础,MAC,地址,网工小白
来源: https://blog.csdn.net/ZYJY2020/article/details/113698646