ARP的工作原理

1、ARP的工作原理
(1)一个网络设备要发送数据给另一个网络设备时,必须要知道对方的IP地址。但是,仅有IP地址是不够的,因为IP数据报文必须封装成帧才能通过数据链路进行发送,而数据帧必须要包含目的MAC地址,因此发送端还必须获取到目的MAC地址。每一个网络设备在数据封装前都需要获取下一跳的MAC地址。IP地址由网络层来提供,MAC地址通过ARP协议来获取。ARP协议是TCP/IP协议簇中的重要组成部分,它能够通过目的IP地址获取目标设备的MAC地址,从而实现数据链路层的可达性。
(2)ARP数据包的格式
Hardware Type | Protocol Type ||
Hardware Length | Protocol Length | Operation Code ||
Source Hardware Address ||
Source Protocol Address ||
Destination Hardware Address ||
Destination Protocol Address ||
①Hardware Type表示硬件地址类型,一般为以太网;
②Protocol Type表示三层协议地址类型,一般为IP;
③Hardware Length为MAC地址的长度,单位是字节;
④Protocol Length为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地址。
(3)ARP的工作过程
①ARP请求:主机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 Reply报文中的源协议地址是主机C自己的IP地址,目标协议地址是主机A的IP地址,目的MAC地址是主机 A 的 MAC 地址,源 MAC 地址是自己的 MAC 地址,同时Operation Code被设置为Reply。ARP Reply报文通过单播传送。
③ARP缓存:主机A收到ARP Reply以后,会检查ARP报文中目的MAC地址是否与自己的MAC匹配。如果匹配,ARP报文中的源MAC地址和源IP地址会被记录到主机A的ARP缓存表中。

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

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

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

5、总结
(1)源设备在发送数据给目的设备前,会首先查看自身的ARP缓存,查找ARP缓存中是否存在目的设备的IP地址和MAC地址的映射。如果存在则直接使用,如果不存在则会发送ARP Request。
(2)当网络上的一个设备被分配了IP地址或者IP地址发生变更后,可以通过免费ARP来检查IP地址是否冲突。

  • 13
    点赞
  • 49
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
ARP(Address Resolution Protocol)是网络协议栈中的一个协议,用于将网络层的IP地址转换为数据链路层的MAC地址,以便在局域网中进行通信。在本次实验中,我们将使用Wireshark来分析ARP协议的工作原理。 1. 实验环境 本次实验环境如下: - 操作系统:Windows 10 - Wireshark版本:3.4.3 - 网络设备:一个路由器、两台计算机 2. 实验步骤 2.1 配置网络 将两台计算机连接到同一个路由器上,并分别设置它们的IP地址和子网掩码。例如,计算机A的IP地址为192.168.0.1,子网掩码为255.255.255.0;计算机B的IP地址为192.168.0.2,子网掩码为255.255.255.0。 2.2 抓包 打开Wireshark,选择适当的网络接口来抓包。在本次实验中,我们选择了连接计算机A的网络接口。然后,点击“开始捕获”按钮开始抓包。 2.3 发送ARP请求 在计算机A上打开命令提示符,输入以下命令: ``` arp -a ``` 该命令将显示计算机A当前的ARP缓存表。由于我们尚未与计算机B通信,因此ARP缓存表中不会有计算机B的条目。 接下来,我们向计算机B发送一个ARP请求,以获取其MAC地址。在命令提示符中输入以下命令: ``` arp -d 192.168.0.2 arp -a ping 192.168.0.2 arp -a ``` 第一个命令将删除计算机B的ARP缓存条目,以确保我们能够看到ARP请求和响应。第二个命令将再次显示ARP缓存表,此时其中不应该有计算机B的条目。第三个命令将向计算机B发送一个ping请求,从而触发ARP请求。第四个命令将再次显示ARP缓存表,此时其中应该已经有计算机B的条目了。 2.4 分析捕获的数据包 停止捕获数据包后,我们可以在Wireshark界面中查看捕获到的数据包。使用过滤器“arp”可以只显示与ARP相关的数据包。 我们可以看到,第一个数据包是计算机A发送的一个ARP请求,目标IP地址为192.168.0.2。第二个数据包是计算机B发送的一个ARP响应,其中包含了计算机B的MAC地址。 3. 实验结论 通过本次实验,我们了解了ARP协议的工作原理。当我们需要向局域网中的其他设备发送数据时,ARP协议可以帮助我们将目标IP地址转换为目标MAC地址,以便进行通信。在本次实验中,我们使用Wireshark工具来抓包并分析ARP请求和响应。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值