首页 > 编程知识 正文

arp协议是什么层协议,网络层的 中的 arp协议作用是什么?

时间:2023-05-04 07:43:36 阅读:275900 作者:707

ARP协议 一.概述

       简单地来说,ARP协议就是地址解析协议。对于以太网,数据链路层上是根据48bit的以太网地址来确定目的接口,设备驱动程序从不检查IP数据报中的目的IP地址。ARP协议为IP地址到对应的硬件地址之间提供动态映射。
       以太网环境下,同一个网段的主机之间需要互相知道对方的MAC地址,才能访问。TCP/IP协议栈从上层到下层的封装过程中,第三层封装需要知道目的IP,第二层封装需要知道目的MAC。目的IP一般由用户手工输入,或者由应用程序填充,也可以通过名称解析系统解析得到,而目的MAC就需要使用ARP来解析。这也就是ARP协议的作用(点对点链路不使用ARP协议)。

二.ARP解析MAC地址的过程 第一步:

       上层应用产生数据,这里用FTP协议为例,在FTP协议中定位了目的IP。

第二步:

       那么,封装的过程如下:
       应用层:需要FTP的控制信息,包括用户名、密码等;
       传输层:目的端口号为21,源为随机端口号;
       网络层:目的IP为172.16.1.200,源IP为172.16.1.1;
       数据链路层:因为不知道目的IP 172.16.1.200对应的MAC,所以目的IP到目的MAC的封装映射失败;
       三层到二层的封装失败,由于二层是以太网,ARP的工作机制便会产生ARP Request(广播帧)去解析目的MAC,此时,源MAC为数据发起者的MAC,目的MAC地址为FFFF:FFFF:FFFF(代表所有MAC地址)。

第三步:

       ARP Request到达本网段中的所有设备上,因为目的为FFFF:FFFF:FFFF(即通过广播的形式),所以所有设备都可以拆掉二层的封装,然后解读ARP数据包中需要解析的目的IP。

第四步:

       目的IP不正确的设备直接忽略这个ARP请求包,目的IP正确的设备,会产生一个ARP Reply去回应这个ARP Request。此时,二层的源MAC为被解析设备的MAC,目的为ARP解析发起者的MAC。

第五步:

       数据的发起者接到ARP Reply后,将目的IP与目的MAC的对应关系添加到自己的ARP表中。

第六步:

       之前未完成二层封装的FTP数据,这时重新开始封装二层头部,此时,正确的目的MAC就被封装到了整个数据帧中。只有完成了整个TCP/IP协议栈封装的数据帧,才能正常的从主机上发出去。

这就是ARP解析MAC地址的整个过程。

三.ARP协议的精髓

       ARP一般只在局域网(同网段中)起作用,部分路由器有ARP代理功能,但也不可能所有广域网上所有的地址都代理了。在跨网段访问时,当发现目的地址不是本网段IP时,将会把数据包发送给网关处理(一般网关就是路由器来做的),路由器此时就发挥他的路由功能进行IP路由.
当到达目的网段后,再在目的网段使用ARP解析出目的主机的MAC地址,实现通信。
       综上,ARP只用于同一局域网通信(特殊情况下可以跨网段,ARP代理时),当源和目的不在同一网段时,跨网段这部分由中间的具有路由功能的设备来进行处理,如路由器。

1、跨网段通信中的ARP协议(一般主机拥有默认网关或者路由策略)

       如果源主机和目的主机不在同一网段,ARP请求的广播帧无法穿过路由器,源主机如何与目标主机实现通信?

       不同网段的主机通信时,主机会封装网关(通常是路由器)的mac地址,然后主机将数据发送给路由器,后续路由进行路由转发,通过arp解析目标地址的mac地址,然后将数据包送达目的地。

具体过程分析如下:


如上图,主机A、B通过路由器连接,属于两个不同的网段子网掩码24(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、路由器收到广播数据包,首先将原192.168.3.1添加到自己的mac地址表中,对应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),然后将缓存中的数据包,封装网关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请求)

此外需注意点:
1、ARP请求以广播发送、以单播回应
2、路由器隔离广播。每一个网段都是独立的广播域
3、跨越网段通信需要使用网关的mac地址

2.代理ARP 1.概述

       代理ARP是ARP协议的一个变种。 对于没有配置缺省网关的计算机要和其他网络中的计算机实现通信,网关收到源计算机的 ARP 请求会使用自己的 MAC 地址与目标计算机的 IP地址对源计算机进行应答。代理ARP就是将一个主机作为对另一个主机ARP进行应答。它能使得在不影响路由表的情况下添加一个新的Router,使得子网对该主机来说变得更透明化。同时也会带来巨大的风险,除了ARP欺骗,和某个网段内的ARP增加,最重要的就是无法对网络拓扑进行网络概括。代理ARP的使用一般是使用在没有配置默认网关和路由策略的网络上的。
       代理ARP:proxy ARP就是通过使用一个主机(通常为router),来作为指定的设备对另一设备的ARP请求作出应答。

2.工作原理

       

这个主机A要发送数据包到主机D。图表显示主机A使用的是16位掩码。(注意这一点!)主机A相信目的网段是直接连接在172.16.0.0上的。于是主机A直接发送一个ARP请求给目的站点。
主机A 需要得到主机D的MAC地址,所以主机A广播ARP请求:

源mac源IP目标mac目标IP00-00-0c-94-36-aa172.16.10.10000-00-00-00-00-00172.16.20.200

ARP请求里主机A将自己的MAC地址作为源地址 FFFF.FFFF.FFFF 做为目的地址进行广播。但是路由器的E0 口默认不支持转发广播。所以主机D不能响应这个ARP请求。
路由器知道主机D在其他子网,于是用自己的MAC地址来应答A

源mac源IP目标mac目标IP00-00-0c-94-36-ab172.16.20.20000-00-0c-94-36-aa172.16.10.100

路由器用自己接口的MAC地址作为源地址回复ARP应答给主机A。这个ARP应答总是利用单播来回复。
主机A收到ARP请求后更新自己的MAC地址表

IP                                          对应的mac172.16.20.20000-00-0c-94-36-ab

现在主机A如果发送数据包给主机D就将数据发送给MAC 00-00-0c-94-36-ab.由路由器转发给主机D。所以目的地址为子网B的数据都发送给路由器。子网A内所有主机ARP地址表显示去往子网B主机的MAC地址全是路由器接口的MAC地址。这个路由器转发其他数据包到子网B。
这个主机A的ARP 地址表

IP                                          对应的mac172.16.20.20000-00-0c-94-36-ab172.16.20.10000-00-0c-94-36-ab172.16.10.9900-00-0c-94-36-ab172.16.10.20000-00-0c-94-36-bb

多个IP地址被映射到一个MAC地址(多对一)。标志这在路由器上使用了 proxy-arp。(查看主机的arp表就清楚)。
proxy ARP有哪些优点?
  最主要的一个优点就是能够在不影响其他router的路由表的情况下在网络上添加一个新的router,这样使得子网的变化对主机是透明的;proxy ARP应该使用在主机没有配置默认网关或没有任何路由策略的网络上
proxy ARP带来的哪些负面影响?
  1.增加了某一网段上ARP流量
  2.主机需要更大的ARP table来处理IP地址到MAC地址的映射
  3.安全问题,比如ARP欺骗(spoofing)
  4.不会为不使用ARP来解析地址的网络工作
  5.不能够概括和推广网络拓扑

另:
       1) 什么是ARP代理?
  路由器收到ARP Request时,若发现查询的目的IP地址在不同子网,路由器会扮演代理的ARP的角色,代为回答,告诉查询者它所要做的MAC地址 (用的是之间接口的MAC地址)
  2)为什么要有ARP代理? 路由器的一个重要功能是把局域网广播包限制在该网内,不让扩散,否则会造成网络风暴。ARP Request是个广播包,它询问的对象若在同一个局域网内,就会回答。但如果查询对象不在同一个局域网,那怎么办呢?为了解决这个问题,路由器就提供一个服务:代理ARP.
  3) 还有什么方法来解决跨局域网的地址查询? 若主机配置了默认网关,在查询MAC地址的对象位于局域网之外的时候,可以把查询任务交给默认网关。
  4) 什么情况下用ARP代理? 网络中主机、路由器都有ARP cache. 主机通常配置了默认网关,它们会用默认网关查询局域网外的MAC地址。 路由器在需要查询远程网段里的MAC地址时, 与其相连接的路由器,在收到ARP Request时就会扮演代理ARP的角色。

四.ARP欺骗

感觉百度百科写得很好 偷个懒,直接见链接 ARP欺骗

1.ARP欺骗根据欺骗对象的不用可以分为三种: 只欺骗受害主机。实施欺骗后效果如下:

2.只欺骗路由器、网关。实施欺骗后效果如下:

3.双向欺骗,即前面两种欺骗方法的组合使用。实施欺骗后的效果如下:
2.欺骗带来的危害可以分为几大类: 1. 网络异常。具体表现为:掉线、IP冲突等。 2. 数据窃取。具体表现为:个人隐私泄漏(如MSN聊天记录、邮件等)、账号被盗用(如QQ账号、银行账号等)。 3. 数据篡改。具体表现为:访问的网页被添加了恶意内容,俗称“挂马”。 4. 非法控制。具体表现为:网络速度、网络访问行为(例如某些网页打不开、某些网络应用程序用不了)受第三者非法控制。

       从目前的情况来看,ARP欺骗(不管是人为的还是ARP病毒)大多数是在网络异常后被发现的。请注意,精心策划的人为ARP欺骗、设计良好的ARP病毒,是不会造成网络异常的,所以网络没有出现异常并不代表不存在ARP欺骗问题!

五.帧格式

以太网目的地址:目的主机的硬件地址。目的地址全为1的特殊地址是广播地址。以太网源地址:源主机的硬件地址。帧类型:对于ARP协议,该字段为0x0806。对于RARP协议,该字段为0x8035。硬件类型:表示硬件地址的类型。值为1时表示以太网地址。也就是说ARP协议不仅仅应用于以太网协议,还可以支持别的链路层协议。协议类型:表示要映射的协议地址类型。值为0x0800时表示IP协议。硬件地址长度:与硬件类型对应的硬件地址的长度,以字节为单位。如果是以太网,则是6字节(MAC长度)。协议地址长度:与协议类型对应的协议地址长度,以字节为单位。如果是IP协议,则是4字节(IP地址长度)。操作类型(op):四中操作类型。ARP请求(1),ARP应答(2),RARP请求(3),RARP应答(4)。发送端硬件地址:如果是以太网,则是源主机以太网地址,此处和以太网头中的源地址对应。发送端协议地址:如果是IP协议,则表示源主机的IP地址。目的端硬件地址:如果是以太网,则是目的以太网地址,和以太网头中的目的地址对应。目的端协议地址:如果是IP协议,则表示源主机要请求硬件地址的IP地址。对应ARP请求包来说,目的端的硬件地址字段无须填充,其他字段都需要填充。对于ARP回复包来说,所有字段都需要填充。

注意:APR请求包是广播的,但是ARP应答帧是单播的。以太网数据报最小长度是60字节(14字节的以太网头,不包含4字节的FCS),ARP数据包长度为42字节(14字节的以太网头和28字节的ARP数据),需要加入填充字符到以太网最小长度要求:60字节。

六.RARP协议(逆地址解析协议)

       将局域网中某个主机的物理地址转换为IP地址,比如局域网中有一台主机只知道物理地址而不知道IP地址,那么可以通过RARP协议发出征求自身IP地址的广播请求,然后由RARP服务器负责回答。RARP协议广泛应用于无盘工作站引导时获取IP地址。

       RARP允许局域网的物理机器从网管服务器ARP表或者缓存上请求其IP地址。

帧格式

       帧格式同ARP协议,帧类型字段和操作类型不同,具体见ARP帧格式描述。

工作原理

主机发送一个本地的RARP广播,在此广播包中,声明自己的MAC地址并且请求任何收到此请求的RARP服务器分配一个IP地址。

本地网段上的RARP服务器收到此请求后,检查其RARP列表,查找该MAC地址对应的IP地址。

如果存在,RARP服务器就给源主机发送一个响应数据包并将此IP地址提供给对方主机使用。

如果不存在,RARP服务器对此不做任何的响应。

源主机收到从RARP服务器的响应信息,就利用得到的IP地址进行通讯;如果一直没有收到RARP服务器的响应信息,表示初始化失败。

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