ARP协议详解

版权声明:本文为CSDN博主「MT筱柒」的原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接及本声明。

原文链接:https://blog.csdn.net/qq_42248536/article/details/88806908
————————————————————————————————————————

ARP是一个非常重要而且经常使用的地址解析协议,它虽然是一个网络层协议,却也涉及数据链路层的信息

ARP协议的基本作用:根据已知的IP地址获得其对应的MAC地址。

一。ARP的基本原理

其实在事实上,一个原设备开始是不知道目的设备的MAC地址的。源设备总是通过某种机制(例如:DNS)先来获取到目的设备的IP地址的,然后利用ARP协议对此IP地址进行解析,从而获得到目的设备的MAC地址。但是,一个设备是知道自己的MAC地址和IP地址的。

在源设备需要解析一个IP地址时,会发出一个广播帧,广播帧的载荷数据是一个ARP请求报文。目的设备在接收到ARP请求报文后,会向源设备发送一个单播帧,该单播帧的载荷数据是一个ARP应答报文,而且该ARP应答报文中包含了目的设备的MAC地址。

上面的ARP工作过程详解:

(1)PC-1会发送一个广播帧,该帧的源MAC地址为MAC 1,类型字段的值是0x0806,说明这是一个载荷数据为ARP报文的帧(ARP请求报文)。而且该ARP请求报文的作用是通告自己的MAC地址,询问所知道的某IP地址(10.0.0.2)对应的MAC地址。

(2)由于发送的是一个广播帧,则PC-2和PC-3都会接收到它,并且根据其类型字段的值将其中的ARP请求报文上送至网络层的ARP处理模块进行处理。

(3)PC-3的处理模块会发现,这个并不是自己的IP地址,所以不会进行应答,而是将ARP请求报文中的IP地址(10.0.0.1)与MAC 1的对应关系存放在自己的ARP缓存表中,然后将ARP请求表丢弃。

(4)然而PC-2的处理模块会发现这正是自己的IP地址,会对其进行应答。此时的PC-2会向PC-1发送一个单播帧,而且该帧的目的MAC地址为MAC 1,源MAC地址为MAC 2,类型字段的值还是0x0806。该帧的数据载荷是一个ARP应答报文,应答报文中包含了PC-2的IP地址和MAC地址MAC 2。此外,PC-2也要将所收获到的ARP请求报文中的IP地址与MAC 1的对应关系存放在自己的ARP缓存表中。

(5)PC-1在收到PC-2发送的单播帧后,会将其中的ARP应答报文上送至三层的ARP处理模块。PC-1的ARP处理模块会从该应答报文中获取的PC-2的MAC地址MAC 2,而且,PC-1也会将IP地址(10.0.0.2)与MAC 2的对应关系存放到自己的ARP缓存表中。

设备中的ARP缓存表是用来临时存放IP地址与MAC地址的对应关系的。当某一台设备需要向目的设备发送单播帧时,会首先查看自己的ARP缓存表中是否已经有了目的设备的MAC地址。如果有,就直接使用它;相反的,就会发起ARP请求来获取它。

ARP缓存表具有动态性:一个条目(即一个IP地址与MAC地址的对应关系)从其被建立或最近一次使用算起,会有180s(该时间值可以通过配置来修改)的生存期;一旦过了生存期,该条目便会被删除。某个条目在每次被使用时,该条目的生存期都会被重新设置为180s。

二。ARP的报文格式

ARP报文分为:ARP请求报文、ARP应答报文。

目的MAC地址源MAC地址类型
硬件类型协议类型hlnPlnop发送端MAC地址
发送端IP地址目的端MAC地址目的端IP地址
PAD
PAD

ARP报文各字段的含义:

字段ARP请求报文ARP应答报文
目的MAC地址ff-ff-ff-ff-ff-ff请求端的MAC地址
源MAC地址请求端的MAC地址被请求端的MAC地址
类型长度为2个字节。取值为0x0806
硬件类型长度为2个字节。表示网络类型;以太网的取值为1
协议字段长度为2个字节。表示协议地址类型;取值为0x8000即表示根据IP地址来进行映射。
硬件地址长度(hln)长度为1个字节。表示硬件地址的长度;以太网中取值为6,表示MAC地址长度为6个字节
协议地址长度(Pln)长度为1个字节。表示协议地址的长度;取值为4表示IP地址长度为4个字节
op长度为2个字节。表示ARP报文的种类;取值为1表示ARP请求报文取值为2表示ARP应答报文
发送端MAC地址请求端的MAC地址被请求端的MAC地址
发送端IP地址请求端的IP地址被请求端的IP地址
目的端MAC地址请求端发出请求时,还不知道该MAC地址。接收方忽略该字段请求端的MAC地址
目的端IP地址请求端希望映射的IP地址,也就是被请求端的IP地址请求端的IP地址
PADPAD字段共有18个字节,目的是凑足以太网帧的载荷数据的最小长度46字节

 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值