【网络协议安全】任务6:ARP协议

目录

一、ARP协议的作用

二、ARP数据包格式

三、ARP请求

四、ARP响应

 五、ARP代理

六、免费ARP

七、ARP命令


ARP 地址解析协议(Address Resolution Protocol,缩写ARP)是一个通过解析网络层地址来找寻数据链路层地址的网络传输协议,它在IPv4中极其重要。

ARP 应用于IPv4中网络设备的通信,但在IPv6中使用NDP(邻居发现协议,Neighbor Discovery Protocol)替代了ARP,除了包含了ARP的功能,还通过ICMPv6实现更多能力,如路由器发现、地址自动配置等,支持多种数据链路层协议,使用组播和单播提高效率。

此外,ARP易受欺骗攻击,缺乏验证机制,例如可以伪造应答进行攻击。此外,大量的恶意请求也可致ARP缓存溢出。

一、ARP协议的作用

数据链路层在进行数据封装时,需要目的MAC地址。
一个网络设备要发送数据给另一个网络设备时,必须要知道对方的IP地址。但是,仅有IP地址是不够的,因为IP数据报文必须封装成帧才能通过数据链路进行发送,而数据帧必须要包含目的MAC地址,因此发送端还必须获取到目的MAC地址。每一个网络设备在数据封装前都需要获取下一跳的MAC地址。IP地址由网络层来提供,MAC地址通过ARP协议来获取。ARP协议是TCP/IP协议簇中的重要组成部分,它能够通过目的IP地址获取目标设备的MAC地址,从而实现数据链路层的可达性。

二、ARP数据包格式

网络设备通过ARP报文来发现目的MAC地址。ARP报文中包含以下字段:

  • Hardware Type表示硬件地址类型,一般为以太网;
  • Protocol Type表示三层协议地址类型,一般为IP;
  • Hardware Length和Protocol Length为MAC地址和IP地址的长度,单位是字节;
  • Operation Code指定了ARP报文的类型,包括ARP Request和ARP Reply;
  • Source Hardware Address指的是发送ARP报文的设备MAC地址;
  • Source Protocol Address指的是发送ARP报文的设备IP地址;
  • Destination Hardware Address指的是接收者MAC地址,在ARP Request报文中,该字段值为0;
  • Destination Protocol Address指的是接收者的IP地址。

三、ARP请求

网络设备一般都有一个ARP缓存(ARP Cache),ARP缓存用来存放IP地址的关联信息。

在发送数据前,设备会先查找ARP缓存表。如果缓存表中存在对方设备的MAC地址,则直接采用该MAC地址来封装帧,然后将帧发送出去。如果缓存表中不存在相应信息,则通过发送ARP Request报文来获得它。学习到的IP地址和MAC地址的映射关系会被放入ARP缓存表中存放一段时间。在有效期内,设备可以直接从这个表中查找目的MAC地址来进行数据封装,而无需进行ARP查询。过了这段有效期,ARP表项会被自动删除。

如果目标设备位于其他网络,则源设备会在ARP缓存表中查找网关的MAC地址,然后将数据发送给网关,网关再把数据转发给目的设备。

本例中,主机A的ARP缓存表中不存在主机C的MAC地址,所以主机A会发送ARP Request来获取目的MAC地址。ARP Request报文封装在以太帧里,帧头中的源MAC地址为发送端主机A的MAC地址。此时,由于主机A不知道主机C的MAC地址,所以目的MAC地址为广播地址FF-FF-FF-FF-FF-FF。ARP Request报文中包含源IP地址、目的IP地址、源MAC地址、目标MAC地址,其中目标的MAC地址的值是0。ARP Request报文会在整个网络上传播,该网络中所有主机包括网关都会接收到此ARP Request报文。网关将会阻止该报文发送到其他网络上。

四、ARP响应

所有的主机接收到该ARP Request报文后,都会检查它的目的协议地址字段与自身的IP地址是否匹配。如果不匹配,则该主机将不会响应该ARP Request报文。如果匹配,则该主机会将ARP报文中的源MAC地址和源IP地址信息记录到自己的ARP缓存表中,然后通过ARP Reply报文进行响应。

 五、ARP代理

开启ARP代理:在接口下输入 arp-proxy enable

位于不同网络的网络设备在不配置网关(或不同网络、同一网段)的情况下,可以通过ARP代理实现相互通信。


 

在上述例子的组网中,主机A需要与主机B通信时,目的IP地址与本机的IP地址在同一个网段,所以A将会以广播形式发送ARP Request报文,请求主机B的MAC地址。但是,广播报文无法被路由器转发,所以主机B无法收到主机A的ARP请求报文,当然也就无法应答。
在路由器上启用代理ARP功能,就可以解决这个问题。启用代理ARP后,路由器收到这样的请求,会查找路由表,如果存在主机B的路由表项,路由器将会使用自己的G0/0/0接口的MAC地址来回应该ARP Request。主机A收到ARP Reply后,将以路由器的G0/0/0接口MAC地址作为目的MAC地址进行数据转发。

六、免费ARP

什么时候产生免费ARP

当设备接口上配置IP地址的时候,就会发送免费ARP 来检查网络中有没有冲突的IP地址

  • 免费ARP可以用来探测IP地址是否冲突。
  • 主机被分配了IP地址或者IP地址发生变更后,必须立刻检测其所分配的IP地址在网络上是否是唯一的,以避免地址冲突。主机通过发送ARP Request报文来进行地址冲突检测。
  • 主机A将ARP Request广播报文中的目的IP地址字段设置为自己的IP地址,且该网络中所有主机包括网关都会接收到此报文。当目的IP地址已经被某一个主机或网关使用时,该主机或网关就会回应ARP Reply报文。通过这种方式,主机A就能探测到IP地址冲突了。

七、ARP命令


评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值