首页 > 编程知识 正文

arp协议的作用和工作原理,地址解析协议arp的工作过程

时间:2023-05-04 03:11:43 阅读:150563 作者:1074

)部署网络设备向其他设备发送数据时,需要知道对方的网络层地址(即IP地址)。 IP地址由网络层提供,但仅有IP地址是不够的,必须将其封装到帧中才能通过数据链路发送IP数据消息。 发送方还必须获取目标MAC地址,因为数据帧必须包含目标MAC地址。 通过目标IP地址获取目标MAC地址的过程是通过ARP协议实现的。

ARP协议是TCP/IP协议簇的重要组成部分,ARP可以通过目标IP地址发现目标设备的MAC地址,实现数据链路层的可达性。

(2) ARP包的格式

ARP协议_ARP

注意: ARP消息不能穿越路由器或转发到其他广播域。

每个字段的含义:

硬件类型表示硬件地址类型,通常为以太网

Protocol Type表示三层协议的地址类型,通常为IP

硬件长度和协议长度是MAC地址和IP地址的长度,单位为字节

操作代码制定了包括ARP request和ARP reply在内的ARP消息的类型

源硬件地址是发送ARP消息的设备的MAC地址

源协议地址是发送ARP消息的设备的IP地址

Destination Hardware Address指向收件人的MAC地址,在ARPrequest消息中,该字段的值为0

目标协议地址是指收件人的IP地址

(三) ARP工作过程1、同网段的数据传输

ARP的简单请求响应

如果两台计算机在同一个局域网上通信,则以ping命令为例。 这个命令使用ICMP协议

PC1基于OSI模型从上到下依次封装数据,包括将IP报头封装到ICMP Date中的封装,但是到了封装MAC地址的时候,PC1首先检查自己的ARP缓存表,确认IP2和他的MAC地址此时,MAC数据帧的封装失败了。 我们使用ping命令时,指定PC2的IP2。 计算机知道目标主机的IP地址,可以完成网络层的数据封装。 设备通信还需要对方的MAC地址,但PC1缓存是表里如一的,因此在MAC封装时无法填写目标MAC地址。

那么,PC1为了获取PC2的MAC地址,PC1发送询问PC2的MAC地址的询问信息。 询问消息包括PC1的IP地址和MAC地址、PC2的IP地址。 现在,我们考虑的问题是,即使是询问消息也需要封装MAC数据帧,该询问消息的目标MAC地址要填写什么,目标MAC地址要规定为ff-。

PC2收到该查询消息后,将其中的IP1和MAC1(PC1的IP和MAC )添加到本地ARP缓存表中,然后PC2发送回复消息,将数据封装在IP和MAC中发送到PC2。 因为缓存表中已经有PC1的IP和MAC的映射了。 此响应消息包含PC2的IP2和MAC2。 PC1接收该响应消息,当然获得PC2的MAC地址并添加到其缓存表中。

经过这样的交互式问答,PC1和PC2都获得了对方的MAC地址。 应当注意,目的地主机首先完成ARP缓存,然后源主机完成ARP缓存。 之后,PC1和PC2就能真正交流了。

2、不同网段数据传输

当不同网段的主机进行通信时,主机会封装网关(通常为路由器)的mac地址。 然后,主机将数据发送到路由器,后续路由进行路由和转发,通过arp解析目标地址的mac地址,并将数据包发送到目标。 具体的过程分析如下

如上所述,主机a、b是用路由器连接并属于两个不同段的子网掩码24 (255.255.255.255.0 )

1、主机a向主机b发送数据,封装IP后发现主机b没有mac地址; 然后询问了ARP,ARP这样回答。 “我在192.168.3.0/24网段。 目标地址为192.168.4.0/24。 不属于同一网段。 需要使用默认网关”ARP发现默认网关为192.168.3.2,但没有网关mac地址,需要先进行查询;

2、主机将数据包暂时放入缓存后,发送ARP询问信息。 将自己的mac地址封装到源mac中,向目标mac地址写入所有f的广播地址,请求网关192.168.3.2的mac地址。 然后通过广播发送;

3、路由器接收广播分组,首先向自己的mac地址表中添加192.168.3.1,相对应的mac地址为0800.0222.2222。 路由发现请求其mac地址,该路由发送回ARP回复。 将自己的IP地址与源IP自己的mac地址封装为源mac,将主机a的IP与目标IP主机a的mac封装为目标mac,“我是192.168.3.2。 我的mac地址是0800.0333.2222 "

4、收到回复后,主机将使网关mac地址对应192.168.4.2 (网关间通信、其它网络段IP地址的mac地址都是网关mac )、以及高速缓存

5、路由接收到数据包,检查目的IP地址,发现不是针对自己的,于是决定路由

后查询路由表,需要发往192.168.4.0网段中的192.168.4.2地址。路由准备从相应接口上发出去,然后查询mac地址表,发现没有主机B的映射。路由器发送arp请求查询主机B的mac地址(原理同2、3步,主机B收到请求后首先会添加网关的mac地址,然后单播回复arp请求);

6、路由器收到主机B的mac地址后,将其添加到路由mac地址表中,然后将缓存中的数据2层帧头去掉,封装自己的mac地址为源mac,主机B的mac地址为目的mac(源和目的IP地址不变),加上二层帧头及校验,发送给主机B;

7、主机B收到数据之后,进行处理,发送过程结束;

8、如果主机B收到数据后进行回复,主机B会进行地址判断,不在同一网段,然后决定将数据发送给网关,主机B查询mac地址表获得网关mac地址,将数据封装后发送(arp地址解析的过程不再需要了,mac地址表条目有一定的有效时间),网关收到数据后直接查询mac表,将二层帧mac地址更改为A的mac发送出去。如此,主机A收到主机B的回复;

综上在跨网段通信过程中有以下过程:
1、判断地址是否同一网段
2、查询目的IP地址的mac(发送arp请求)

3、ARP之广播请求单播回应

上图面的图解是不完全的ARP协议,因为在局域网里边不会只有两台主机,这里就要考虑如何在局域网众多主机里获得目的主机的MAC。

和上面的一样,刚开始PC1并不知道PC2的MAC地址,同样需要发送ARP请求,但是这个局域网里主机很多,怎么唯独获取PC2的MAC呢,①我们想到和一群陌生人交流一样,可以挨着询问一遍,这就是我们要说的广播,首先PC1广播发送询问信息(信息和上一张图介绍的一样),在这个普通交换机上连接的设备都会受到这个PC1发送的询问信息。

接下来②需要做的是,所有在这个交换机上的设备需要判断此询问信息,如果各自的IP和要询问的IP不一致,则丢弃,如图PC3、Route均丢弃该询问信息,而对于PC2判断该询问信息发现满足一致的要求,则接受,同样的写入PC1的IP和MAC到自己的ARP映射表中。

最后,③PC2单播发送应答信息给PC1,告诉PC1自己的IP和MAC地址。

四:ARP代理

上图中,主机A需要与主机B通信时,目的IP地址与主机的IP地址位于不同网络,但由于主机A未设置网关,所以他将会以广播的形式发送ARP Request报文,请求B的MAC地址,但是广播报文无法被路由器转发,所以主机B无法收到主机A的请求报文。
在路由器上启用代理ARP功能,就可以解决这个问题。启用代理后,路由器接收到这样的请求,会查找路由表,如果存在主机B的路由表项,路由器会将自己的G0/0/0接口的MAC地址回应该ARP Requestrian。主机A收到ARP Reply后,将一路有油漆的G0/0/0接口MAC地址作为目的MAC地址进行数据转发。
小结:1如果两台主机在同一个网段,则直接发送ARP Request报文就好。
2 如果在不同网段,(1)主机A设置了网关,ARP协议可以正常使用。
(2)主机A没有设置网关,这种情况下,我们要开启ARP代理,路由器来重新封装,转发报文

五: 免费ARP

主机A将ARP Request 广播报文中的目的IP地址字段设置为自己的IP地址,该网络中的所有主机都会接受到此报文。当目的IP地址已经被某一个主机或网管室友是,该主机或网关就会回应ARP reply 报文,通过这种方式主机A就能探测到IP地址冲突了。

版权声明:该文观点仅代表作者本人。处理文章:请发送邮件至 三1五14八八95#扣扣.com 举报,一经查实,本站将立刻删除。