ARP 协议详解 ARP报文结构

来源:互联网 发布:知豆电动汽车租赁 编辑:程序博客网 时间:2024/05/29 16:40

ARP:地址解析协议(address Resolution protocol,地址解析协议)是将IP地址解析为以太网MAC地址(或称物理地址)的协议。

 

在局域网中,当主机或其它网络设备有数据要发送给另一个主机或设备时,它必须知道对方的网络层地址(即I地址IP)但是仅仅有IP地址是不够的,因为IP数据报文必须封装成帧才能通过物理网络发送,因为发送站还必须有接收站的物理地址,所以需要从IP地址到物理地址,所以需要从IP地址到物理地址的映射。ARP就是实现这个功能的协议。

 

ARP报文格式如下

 

ARP报文结构

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

协议类型:表示要映射的协议地址类型。它的值为0x0800表示IP地址类型

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

操作类型(op):1表示ARP请求,2表示ARP应答

发送端MAC地址:发送方设备的硬件地址;

发送端IP地址:发送方设备的IP地址;

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

目标IP地址:接收方设备的IP地址。

ARA表格式如下

ARP地址解析过程

A. 主机A和B在同一个网段,主机A要向主机B发送信息。如图1-2所示,具体的地址解析过程如下:

(1)       主机A首先查看自己的ARP表,确定其中是否包含有主机B对应的ARP表项。如果找到了对应的MAC地址,则主机A直接利用ARP表中的MAC地址,对IP数据包进行帧封装,并将数据包发送给主机B。

(2)       如果主机A在ARP表中找不到对应的MAC地址,则将缓存该数据报文,然后以广播方式发送一个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数据包进行封装后发送出去。

B. 当主机A和主机B不在同一网段时,主机A就会先向网关发出ARP请求,ARP请求报文中的目标IP地址为网关的IP地址。当主机A从收到的响应报文中获得网关的MAC地址后,将报文封装并发给网关。如果网关没有主机B的ARP表项,网关会广播ARP请求,目标IP地址为主机B的IP地址,当网关从收到的响应报文中获得主机B的MAC地址后,就可以将报文发给主机B;如果网关已经有主机B的ARP表项,网关直接把报文发给主机B。

 

免费ARP

免费ARP报文是一种特殊的ARP报文,该报文携带的发送端IP地址和目标IP地址都是本机地址,报文源MAC地址是本机地址,目的MAC地址是广播地址。

设备通过对外发送免费ARP报文来实现以下功能:

  1. 确定其它设备的IP地址是否与本机的IP地址冲突。当其它设备收到免费ARP报文后,如果发现报文中的IP地址和自己的IP地址相同,则给发送免费ARP报文的设备返回一个ARP应答,告知该设备IP地址冲突。

2. 设备改变了硬件地址,通过发送免费ARP报文通知其它设备更新ARP表项。

 

免费ARP报文学习功能的作用

使能了免费ARP报文学习功能后,设备会根据收到的免费ARP报文中携带的信息(源IP地址、源MAC地址)对自身维护的ARP表进行修改。设备先判断ARP表中是否存在与此免费ARP报文源IP地址对应的ARP表项:

?             如果没有对应的ARP表项,设备会根据该免费ARP报文中携带的信息新建ARP表项;

?             如果存在对应的ARP表项,设备会根据该免费ARP报文中携带的信息更新对应的ARP表项。

关闭免费ARP报文学习功能后,设备不会根据收到的免费ARP报文来新建ARP表项,但是会更新已存在的对应ARP表项。如果用户不希望通过免费ARP报文来新建ARP表项,可以关闭免费ARP报文学习功能,以节省ARP表项资源。

 

 

0 0
原创粉丝点击