您好,欢迎访问三七文档
当前位置:首页 > 行业资料 > 其它行业文档 > 7立昂技术-ARP协议
立昂技术股份有限公司AddressResolutionProtocol立昂技术股份有限公司:300603立昂研究院:徐伟民2017.12.071AddressResolutionProtocol3ARPtoattackandprevent2ReverseAddressResolutionProtocol引言在以太网协议中规定,同一局域网中的一台主机要和另一台主机进行直接通信,必须要知道目标主机的MAC地址。而在TCP/IP协议栈中,网络层和传输层只关心目标主机的IP地址。这就导致在以太网中使用IP协议时,数据链路层的以太网协议接到上层IP协议提供的数据中,只包含目的主机的IP地址。因此需要能够将逻辑地址和相应的物理地址之间进行映射。完成这样的映射可使用静态映射和动态映射。ARP映射静态映射:创建一个表,存储逻辑地址和物理地址的关联关系。然后将网络上的每个主机都存储这个表。缺点是映射表必须周期的更新,增加了网络的开销动态映射:地址解析协议ARP和逆地址解析协议RARP用于实现第二层地址和第三层地址之间的转换ARP48bitMAC地址32bitIP地址RARPARP,AddressResolutionProtocol即地址解析协议,实现通过IP地址得知其物理地址。在TCP/IP网络环境下,每个主机都分配了一个32位的IP地址,这种互联网地址是在网际范围标识主机的一种逻辑地址。为了让报文在物理网路上传送,必须知道对方目的主机的物理地址。这样就存在把IP地址变换成物理地址的地址转换问题。以以太网环境为例,为了正确地向目的主机传送报文,必须把目的主机的32位IP地址转换成为48位以太网的地址。这就需要在互连层有一组服务将IP地址转换为相应物理地址,这组协议就是ARP协议。Arp只有两种封包:arprequest和arpreply什么是ARPARP分组格式ARP分组格式1.硬件类型:16bit,定义网络类型。以太网是类型1,取值0x0001。2.协议类型:16bit,定义协议类型。对应IPv4协议,值为0x0800。3.硬件长度:8bit,定义以字节为单位的物理(硬件)地址长度,即n的值。以太网是6。4.协议长度:8bit,定义以字节为单位的逻辑(协议)地址长度,即m的值。IPv4的值为4。5.操作码:16bit,定义分组的类型。ARP请求为0x0001,ARP应答为0x0002。RARP请求为0x0003,RARP应答为0x0004。ARP分组格式续6.发送方硬件地址、发送方协议地址、目的硬件地址和目的协议地址:它们是可变长度字段。源和目的硬件地址对应以太网都是48位地址。源和目的协议地址对应IPv4协议是32位地址。ARP封装ARP/RARP分组直接封装在链路帧中帧类型ARP/RARP报文PAD字节22818ARP/RARP报文封装在以太网帧中格式CRC4硬件类型目的地址源地址66协议类型硬件地址长度协议地址长度操作类型发送者以太网地址目标以太网地址发送者IP地址目标IP地址222116644ARP:0x0806RARP:0x80351:ARP请求2:ARP应答3:RARP请求4:RARP应答0x08000x060x040x0001ARP工作原理每台主机或路由器都有一个ARP缓存表,用来保存IP地址与MAC地址的对应关系。以主机A(192.168.1.5)向主机B(192.168.1.1)发送数据为例。当发送数据时,主机A会在自己的ARP缓存表中寻找是否有目标IP地址。如果找到了,也就知道了目标MAC地址,直接把目标MAC地址写入帧里面发送就可以了;如果在ARP缓存表中没有找到目标IP地址,主机A就会在网络上发送一个广播arprequest,请求包中包含了B主机的ip地址和mac地址。网络上其他主机并不响应ARP询问,直接丢弃,只有主机B接收到这个帧时,才以单播方式向主机A做出回应arpreply,并带上自己的ip和mac地址,而B主机收到A的请求包时也会将A主机的IP与MAC对应关系保存在自己的缓存区ARP工作示意图问题:发送端往往有多个IP数据报发送到同一个目的端。如果对发送到同一个主机或路由器的每一个数据报都使用ARP,势必会带来较大的开销。广播ARP请求不仅要耗费带宽,而且使得本地网络中的每台主机都要处理该广播帧,或忽略或给出响应帧。思考:是不是留下了被攻击的可能ARP高速缓存-IARP高速缓存-II可以使用ARP高速缓存表解决这个问题。每个主机或路由器上都有一个ARP高速缓存表。这个高速缓存表存放最近Internet地址到硬件地址之间的映射记录。高速缓存表中每一项的生存时间有限,起始时间从被创建时开始算起。ARP高速缓存-III按照缺省设臵,ARP高速缓存中的项目是动态的,每当发送一个指定地点的数据报且高速缓存中不存在当前项目时,ARP便会自动添加该项目ARP高速缓存中地址映射表项的超时问题:由于IP地址与物理地址的映射关系可能因网络接口或IP地址的变化而发生变化,对于ARP高速缓存中地址映射表项都存在一个过时的问题。一旦高速缓存的项目被输入,它们就已经开始走向失效状态。解决:给ARP高速缓存中的每一个表项设臵一个超时值,使得每个地址映射表项都有一个生命期。例如,在WindowsNT网络中,如果输入项目后不进一步使用,物理/IP地址对就会在2至10分钟内失效。因此,如果ARP高速缓存中项目很少或根本没有时,是正常的。ARP高速缓存-IV静态ARP表项一种控制地址映射表项超时值的方法是在ARP高速缓存中创建一个静态表项。静态表项是永不超时的地址映射表项。静态表项主要用在一台主机经常向另一台主机发送ARP请求的情况下,为了提高效率,减少不必要的开销。静态表项也有可能发生变化:使用arp实用程序可以人工删除静态表项。重新启动主机也会使静态表项丢失。动态表项与静态表项冲突时,以动态表项为准问题:静态表项是固定不变的吗?ARP高效运行的关键每个主机上都有一个ARP高速缓存,即ARP表ARP表中记录了最近的映射记录ARP表UNIX实现中完整表项的生存时间为20分钟,不完整表项的生存时间为3分钟。所谓不完整表项就是在以太网上对一个不存在的主机发出ARP请求时,在本地保留的一个只有ip地址没有MAC地址的表项。Windows实现中没有被使用的ARP表项老化时间2分钟,正在使用的ARP表项老化时间10分钟。在表项正在使用时,超时值就应该启动,但是大多数的从伯克利系统演变而来的系统没有这样做――它们每次都是在访问表项进重设超时值。路由器ARP老化时间可以设臵,时间范围一般是1-1440分钟之间,缺省为20分钟。注:没有UNIX中的完整表项和不完整表项的概念,也不存在Windows中区分ARP表项是否被上层协议所正在使用,只是固定一个老化时间,时间到了,表项就老化,正在使用的表项也一样被老化。ARP表的关键ARP表的老化机制ARP表是高效运行的关键可以通过arp命令查看、添加和删除高速缓存中的内容。ARP命令arp命令可以显示、添加和删除arp内容。在windows和unix系统中都有这个命令。arp-a[inet_addr]显示地址映射表项,[]为可选项。arp-g[inet_addr]功能与arp-a[inet_addr]相同。arp-dinet_addr删除由inet_addr所指定的表项。arp-d*删除所有表项arp-sinet_addrphys_addr增加由inet_addr和phys_addr指定的静态表项。arp/?显示帮助说明:1、使用ARP命令查看高速缓存内容前最好先ping此台主机或路由器。2、为了能抓到ARP协议包,最好在命令行中运行arp–d清除arp缓存。ARP实用命令ARP代理ARP请求面对跨网段的ARP请求,回OR不回?如果ARP请求是从一个网络的主机发往另一个网络上的主机时……A想要访问D,A不知道网关地址,如何完成?PC将网关设成自己的ip地址,在访问非本网段目的地址时,也会发送ARP请求。[当PC不知道网关地址(或者网关地址经常发生变化时),常常将网关设成自己]10.0.0.1/2410.0.0.2/2410.0.1.3/2410.0.1.4/2410.0.1.1/2410.0.0.3/24ABCDARP请求1如果ARP请求是从一个网络的主机发往另一个网络上的主机,那么连接这两个网络的路由器就可以回答该请求,这个过程称作委托ARP或ARP代理(ARPProxy)ARP应答1ARP请求2ARP应答210.0.0.1/2410.0.0.2/2410.0.1.3/2410.0.1.4/2400d0.f800.000100d0.f800.000200d0.f800.000300d0.f800.000410.0.1.1/2400d0.f800.000600d0.f800.000510.0.0.3/24代理(检查自己是否有请求的目的地址的路由,如果有,回应arp请求【填充路由器接口mac】)ARP代理续1AddressResolutionProtocol3ARPtoattackandprevent2ReverseAddressResolutionProtocol具有本地磁盘的系统引导时,一般是从磁盘上的配臵文件中读取IP地址。但是无盘机,如X终端或无盘工作站,则需要采用其他方法来获得IP地址。于是RARP有了用武之地……网络层链路层链路层网络层32位internet地址32位internet地址48位以太网地址48位以太网地址ARPRARPARPRARPRARP逆地址解析协议10.0.0.110.0.0.210.0.0.310.0.0.4我是00d0.f800.0001请告诉我我的IP地址RARP服务器00d0.f800.000100d0.f800.000200d0.f800.000300d0.f800.0004运行RARP时,网络中要有RARP服务器RARP请求RARP的实现过程-请求10.0.0.110.0.0.210.0.0.310.0.0.4我是RARP服务器我知道你的IP地址是10.0.0.200d0.f800.000100d0.f800.000200d0.f800.000300d0.f800.0004RARP服务器哦我知道我的IP了我可以和别人通信了RARP应答RARP的实现过程-应答首先,ARP和RARP是不同的操作。在概念上,RARP的实现比较简单,但是因为需要RARP服务器,问题变得不那么简单:ARP假设每一个主机都知道它的硬件地址和协议地址间的映射。而RARP需要一个或者更多的服务器主机来维护一个存有从硬件地址到协议地址的映射的数据库,并对客户机的请求作出应答。RARP服务器的功能由用户进程来提供。RARP服务器的实现是与系统捆绑在一起的。多个RARP服务器导致网络流量增加,网络的冲突加剧。RARP的复杂性1AddressResolutionProtocol3ARPtoattackandprevent2ReverseAddressResolutionProtocol免费ARP当一个主机和你配臵了一样的IP地址时,怎么办?我改了自己的IP地址,别人怎么知道我改了IP地址?其实很简单:一机器进入了我的网络领域或更改自己的IP地址按规矩,他要向网络中广播一个ARP报文告诉我们这些土著他的新IP地址和MAC地址我们就对自己ARP表进行更新看看ARP表,居然有人和我用一样的IP地址…….这就是免费ARP为什么要免费ARP?免费ARParp泛洪:瞬间发送大量的免费arp数据包给switch,填满switch的mactable,导致switch工作异常。上述可见免费ARP必不可少,否则网络上可能出现多个主机配臵相同的ip地址。但是,免费ARP也常常被人用来对网络设备进行攻击:当然对应的网络设备也会给出对应的攻击防范的措施,这些措施往往都是防止设备学习过量的ARP,使得内存占用过高,导致设备瘫机。而设备无法区分那些ARP报
本文标题:7立昂技术-ARP协议
链接地址:https://www.777doc.com/doc-23447 .html