一篇文章讲清楚什么是ARP协议

1.什么是ARP协议

在说ARP协议之前,我们先来了解IP地址和MAC地址的作用.

IP 地址是网络中用于标识主机或网络设备的逻辑地址。用于在网络中进行路由选择和数据的分组转发。

MAC 地址是网络设备的物理地址,具有唯一性,通常被固化在设备的网络接口卡(NIC)中。在局域网中用于标识具体的网络设备。就如同每个人的身份证号一样,MAC 地址确保了网络中的设备能够被唯一识别。

以寄快递为例,IP地址就是收件人,而收货地址就是MAC

计算机每发送一包数据,都需要填写源MAC,目标MAC,源IP和目标IP.

image-20240811153134865

一般情况下,源IP和目标IP都是用户指定的,源MAC就是本机的MAC地址,而目标MAC是如何获取的呢? 答案就是ARP协议了

image-20240811153319851

ARP(Address Resolution Protocol,地址解析协议)是一种在局域网中用于将 IP 地址转换为 MAC 地址的网络协议。

2.ARP协议的工作流程

假设有一台计算机A,它的IP地址是192.168.0.10,它现在要向192.168.1.11发送一个UDP报文.此时操作系统会将这一包UDP报文暂存,先用ARP协议去查对方的MAC地址

计算机A会通过网络向外广播一包ARP请求报文.请求的源MAC和源IP就是本机对应内容,目标IP则是需要查询的IP,也就是192.168.1.11,目标MAC地址是全0的MAC地址(表示这是一个广播请求,网络中的所有设备都会接收到这个请求并进行处理)

image-20240811153824406

数据链路层里的MAC地址是全f的MAC地址,代表的是广播地址。表示在数据链路层中进行广播

image-20240811154354951

网络中的所有计算机都能收到这一帧的请求报文,收到报文的计算机会解析报文查看目标IP地址,如果和自己的IP地址相同,那么说明自已需要对这一帧报文应答.

也就是192.168.1.11 在收到后会生成一帧ARP回复报文,在回复报文中会填写自己的MAC地址,这一帧报文是使用单拨的方式回复的.

回复报文被主机A在收到后,从中解析到主机B的MAC地址,并将之前暂存的UDP报文取出,填入目标MAC地址后发出,这样就完成了这帧UDP报文的发送.

当然并不是每次都需要查询一次目标IP的MAC地址,通过ARP协议查询到的MAC地址会写入主机的ARP表中缓存起来,所以在每次发送请求前,都是先从ARP中查询是否有目标IP的MAC地址,没有才会执行上述的ARP查询步骤.

image-20240811155418266

3.免费ARP

看到这里又出现了一个新的问题,那就是IP地址是可以变的.

万一IP地址在 不同的主机之前切换了,怎么办呢?下次发送数据时会不会发送错误?

比如现在网络中有三台主机,主机A,主机B和主机C.对应的IP地址是192.168.1.10,192.168.1.11和192.168.1.12. 当前已经互相发现了对方,完成了ARP表的填充,通信也很正常

image-20240811155629836

如果此时将主机B和主机C的IP地址互换一下,主机A的ARP表还没有发生变化,如果主机A想要给192.168.1.11发送数据,从ARP表中查询到的是主机B的MAC地址,数据发送之后这一帧数据会被送到主机B上,实际上主机C的IP地址才是192.168.1.11,此时主机B收到这一帧数据之后会直接舍弃.然而实际情况不是这样.

image-20240811155942311

当主机B和主机C的IP地址更换IP地址后,操作系统会主动向网络中广播一个免费的ARP数据包,这一包数据不需要回复,目的就是告诉网络中的所有主机当前的IP地址和MAC地址的绑定关系,每一台收到免费ARP的主机自己更新自己的ARP表就好了.这样网络中的其它设备几乎就能立即更新的IP地址和MAC地址的映射关系了

image-20240811160338076

免费 ARP(Gratuitous ARP)的两个主要作用:

  1. 用于检测 IP 地址冲突:当一个主机发送免费 ARP 时,如果收到了响应,就表明网络中存在其他设备使用了相同的 IP 地址,即存在 IP 地址冲突。
  2. 刷新同一网络中其他设备的 ARP 缓存:当主机的网络配置发生变化(如更换了网卡),发送免费 ARP 可以通知其他设备更新其保存的关于该主机的 MAC 地址信息。

4.ARP攻击

ARP 攻击(ARP Attack)是一种针对 ARP 协议的网络攻击方式。

ARP 攻击的原理是攻击者通过发送伪造的 ARP 数据包,来欺骗网络中的其他设备,导致网络通信出现异常。

常见的 ARP 攻击方式包括:

  1. ARP 欺骗:攻击者伪装成网关或其他主机,向目标主机发送虚假的 ARP 响应,使得目标主机将数据错误地发送给攻击者,造成数据泄露或通信中断。
  2. ARP 泛洪:攻击者大量发送无效的 ARP 数据包,导致网络设备的 ARP 缓存被填满,正常的 ARP 信息无法被存储,从而影响网络通信。

假设现在有一个网络,这个网络中有多台计算机,通过计算机互相通信.同时用过一台路由器连接到互联网上,假设路由器的IP地址是192.168.1.1. 主机A访问互联网上的数据包不管是TCP还是UDP协议,都要通过路由器发送到互联网上,**也就是说在主机A所有的数据包中目标MAC地址都是路由器的MAC地址.**当然路由器的MAC地址也是通过ARP协议查询IP地址192.168.1.1得到的

image-20240811161231429

假设现在有一台主机C,它得IP地址是192.168.1.11,它一直在网路中广播一包免费的ARP报文,**这个ARP报文中伪造了IP地址的是192.168.1.1,但是MAC地址是主机C的MAC地址.**这一包免费ARP发送到网络中就相当于告诉网络中的其它主机192.168.1.1是主机C,那么主机A收到后就会认为192.168.1.1的MAC改了,从而修改自己的ARP表,那么之后发送的数据包填写的MAC地址都是主机C的MAC地址,从而导致主机A无法正常上网.这就是典型的ARP攻击.image-20240811161704663

防御ARP攻击是一件非常困难的事情,这种ARP欺骗无法进行有效的检测,最简单的方法还是配置静态ARP.

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

比奇堡的天没有云

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值