ARP协议

ARP协议

原文地址:http://blog.csdn.net/tigerjibo/article/details/7351992#t4

前言:ARP协议的作用:

1. 什么是ARP?   

ARP (Address Resolution Protocol) 是个地址解析协议。最直白的说法是:在IP以太网中,当一个上层协议要发包时,有了该节点的IP地址,ARP就能提供该节点的MAC地址。

2为什么要有ARP?

OSI 模式把网络工作分为七层,彼此不直接打交道,只通过接口(layre interface). IP地址在第三层, MAC地址在第二层。

协议在发生数据包时,首先要封装第三层 (IP地址)和第二层 (MAC地址)的报头, 但协议只知道目的节点的IP地址,不知道其物理地址,又不能跨第二、三层,所以得用ARP的服务。

详细说明:

Ø  在网络通讯时,源主机的应用程序知道目的主机的IP地址和端口号,却不知道目的主机的硬件地址,而数据包首先是被网卡接收到再去处理上层协议的,如果接收到的数据包的硬件地址与本机不符,则直接丢弃。因此在通讯前必须获得目的主机的硬件地址。ARP协议就起到这个作用

Ø  当一台主机把以太网数据帧发送到位于同一局域网上的另一台主机时,是根据 48位的以太网地址来确定目的接口的,设备驱动程序从不检查 IP数据报中的目的IP地址。ARP(地址解析)模块的功能为这两种不同的地址形式提供映射:32位的 IP地址和 48位的以太网地址

.ARP报文各字段含义:

ARP报文字段总共有28个字节  (1Byte = 8bit  即 1字节=8比特)

1.硬件类型:占2个字节,表明ARP实现在何种类型的网络上。

Ø  值为1:表示以太网。

2.协议类型:占2个字节表示要映射的协议地址类型。

Ø  IP:0800

3.硬件地址长度:占1个字节,表示 MAC地址长度,其值为6个字节。

4.协议地址长度:占1个字节,表示IP地址长度,此处值4个字节

5.操作类型 :占2个字节,表示ARP数据包类型。

Ø  值为1表示ARP请求。

Ø  值2表示ARP应答。

6.源MAC地址:占6个字节,表示发送端MAC地址

7.源IP地址:占4个字节,表示发送端IP地址

8.目的以太网地址:占6个字节,表示目标设备的MAC物理地址

9.目的IP地址:占4个字节,表示目标设备的IP地址.

注意:在ARP操作中,有效数据的长度为28个字节,不足以太网的最小长度46字节长度,需要填充字节,填充字节最小长度为18个字节

.ARP请求分组或应答分组

以太网首部总共有14字节数据,arp请求报文总共有28字节。所以一个ARP请求分组或应答分组总共有46字节数据。

而以太网数据包的最小数据为60字节。所以,要对其进行填充。

这里有一些重复信息

1.  在以太网的数据帧报头中和ARP请求数据帧中都有发送端的MAC物理地址。

2.  在发送ARP请求时,以太网帧头中的目的MAC物理地址为FF-FF-FF-FF-FF-FF,而在ARP帧中的目的MAC处此时为空。

3.  对一个ARP请求来说,除ARP中目的端MAC硬件地址外的所有其他的字段都有填充值。当系统收到一份目的端为本地的ARP请求报文后,它就把硬件地址填进去,然后用两个目的端地址分别替换两个发送端地址,并把操作字段置为2,最后发送出去。

.ARP协议工作过程:

1.     原理:(ARP协议只使用于局域网中)

1>   在局域网中,网络中实际传输的是“帧”,帧里面是有目标主机的MAC地址的。

2>   在以太网中,一个主机要和另一个主机进行直接通信,必须要知道目标主机的MAC地址。但这个目标MAC地址是如何获得呢?它就是通过地址解析协议获得的。所谓“地址解析”就是主机在发送帧前将目标IP地址转换成目标MAC地址的过程。

3>   ARP协议的基本功能就是通过目标设备的IP地址,查询目标设备的MAC地址,以保证通信的顺利进行。

4>   点对点的连接是不需要ARP协议的

2.    工作过程:

1>   当主机A向本局域网上的某个主机B发送IP数据报时,就先在自己的ARP缓冲表中查看有无主机B的IP地址。

2>   如果有,就可以查出其对应的硬件地址,再将此硬件地址写入MAC帧,然后通过以太网将数据包发送到目的主机中。

3>   如果查不到主机B的IP地址的表项。可能是主机B才入网,也可能是主机A刚刚加电。其高速缓冲表还是空的。在这中情况下,主机A就自动运行ARP。

(1)ARP进程在本局域网上广播一个ARP请求分组。ARP请求分组的主要内容是表明:我的IP地址是192.168.0.2,我的硬件地址是00-00-C0-15-AD-18.我想知道IP地址为192.168.0.4的主机的硬件地址。

(2)在本局域网上的所有主机上运行的ARP进程都收到此ARP请求分组。

(3)主机B在ARP请求分组中见到自己的IP地址,就向主机A发送ARP响应分组,并写入自己的硬件地址。其余的所有主机都不理睬这个ARP请求分组。ARP响应分组的主要内容是表明:“我的IP地址是192.168.0.4,我的硬件地址是08-00-2B-00-EE-AA”,请注意:虽然ARP请求分组是广播发送的,但ARP响应分组是普通的单播,即从一个源地址发送到一个目的地址。

(4)主机A收到主机B的ARP响应分组后,就在其ARP高速缓冲表中写入主机B的IP地址到硬件地址的映射。

3.    事例说明:用ping说明ARP工作的原理

假设我们的计算机IP地址是192.168.1.1,要执行这个命令:ping192.168.1.2。该命令会通过ICMP协议发送ICMP(以太网控制报文协议)数据包

该过程需要经过下面的步骤:  

1> 应用程序构造数据包,该示例是产生ICMP包,被提交给内核(网络驱动程序);   

2> 内核检查是否能够转化该IP地址为MAC地址,也就是在本地的ARP缓存中查看IP-MAC对应表;

3> 如果存在该IP-MAC对应关系,那么跳到步骤<7;

如果不存在该IP-MAC对应关系,那么继续下面的步骤;

4> 内核进行ARP广播,目的MAC地址是FF-FF-FF-FF-FF-FF,ARP命令类型为REQUEST(1),其中包含有自己的MAC地址;

5> 当192.168.1.2主机接收到该ARP请求后,就发送一个ARP的REPLY(2)命令,其中包含自己的MAC地址;

6> 本地获得192.168.1.2主机的IP-MAC地址对应关系,并保存到ARP缓存中;   

7> 内核将把IP转化为MAC地址,然后封装在以太网头结构中,再把数据发送出去;  

4.    特殊情况:

ARP是解决同一个局域网上的主机或路由器的IP地址和硬件地址的映射问题。如果所要找的目标设备和源主机不在同一个局域网上。

1>此时主机A就无法解析出主机B的硬件地址(实际上主机A也不需要知道远程主机B的硬件地址);

2>此时主机A需要的是将路由器R1的IP地址解析出来,然后将该IP数据报发送给路由器R1.

3>R1从路由表中找出下一条路由器R2,同时使用ARP解析出R2的硬件地址。于是IP数据报按照路由器R2的硬件地址转发到路由器R2。

4>路由器R2在转发这个IP数据报时用类似方法解析出目的主机B的硬件地址,使IP数据报最终交付给主机B.

说明:

Ø  如果你的数据报是发送到不同网段的目的地,那么就一定存在一条网关的IP-MAC地址对应的记录。   

Ø  知道了ARP协议的作用,就能够很清楚地知道,数据报的向外传输很依靠ARP协议,当然,也就是依赖ARP缓存。要知道,ARP协议的所有操作都是内核自动完成的,同其他的应用程序没有任何关系。同时需要注意的是,ARP协议只使用于本网络。

.ARP缓冲表和TTL

1.  ARP缓冲表

1> ARP协议的本质是完成网络地址到物理地址的映射。从概念上讲就是找到一个映射方法f,使得 “物理地址 = f(网络地址)“。物理地址有两种基本类型:以太网类型和令牌环网类型。网络地址特指IP地址,对映射方法的要求就是高效。具体到以太网,它使用的是动态绑定转换的方法。一般是设置ARP高速缓存,通过学习,老化,更新,溢出算法处理ARP映射表来解决这些问题。

Ø 学习指ARP收到任何指向本结点IP地址的ARP/IP包,从中提取出地址对,当ARP缓冲表中无对应项时,由ARP接收部分添加;

Ø 老化指为每项设置寿命域,以便代谢掉陈旧的地址映射项;

Ø 更新指ARP提取到新的地址对时,用其更新缓存里已有的对应项;

Ø 溢出算法指当缓存满时,采取何种方法替代旧有的地址对。

2> ARP缓存表由状态,寿命,IP地址,MAC地址4个字段组成。状态字段指示地址对是否有效;寿命字段用于老化操作,初始存入最大值,以后由OS时间函数调用,每秒减1,直至为0清除;IP地址和MAC地址字段保存网络地址和物理地址的映射。围绕ARP缓存表,完成了4种操作:学习,老化,更新,表满处理。

3> 当ARP被询问一个已只IP地址节点的MAC地址时,先在ARPcache 查看:

A 若存在,就直接返回MAC地址,

B 若不存在,才发送ARP request向局域网查询。

4>   当主机A向B发送数据报时,很可能以后不久主机B还要向A发送数据报,因而主机B可能要向A发送ARP请求分组。所以,为了减少网络上的通信量,主机A在发送其ARP请求分组时,就将自己的IP地址与硬件地址写入主机B自己的ARP高速缓冲表中。这对主机B以后向A发送数据报时就更方便了。

Tiger 说明

任何事物都有两面性,如果掌握的好它就是天使,如果掌握的不好它就是撒旦,ARP中的缓冲表为计算机之间的通信效率和减少网络通信量之间作出了巨大的贡献,但是它同时为我们上网时留下了安全隐患;例如交换机嗅探(在下面会有介绍)

2.  ARP中的TTL(Time To Live即上面所说的寿命域)

ARP将保存在高速缓冲表中的每一个映射地址表项都设置了TTL(生存时间),只要TTL小于0的项目就从高速缓冲表中删除掉。

(ARP的超时值一般为20分钟,对完整的表项设置为20分钟,而对不完整的表项设置为2分钟《不完整的表项:即在以太网上对一个不存在的主机发出ARP请求》,当这些表项再次使用时,这些实现一般都把超时值重新设为20分钟。)

好处:主机A和B通信。A的ARP高速缓冲表里保存有B的物理地址。但B的网卡突然坏了,B立即就更换了一块,因此B的硬件地址就改变了。A还要和B继续通信。A在其ARP缓冲表中查找到B原先的硬件地址,并使用该硬件地址向B发送数据帧。但B原先的硬件地址已经失效了。因此A无法找到主机B。但是过了一段时间,A的ARP高速缓冲表中已经删除了B原先的硬件地址(因为它的生存时间到了),于是A重新广播发送ARP请求分组,又找到了B。

.ARP命令:

1、 使用arp -a命令就可以查看本地的ARP缓存内容,所以,执行一个本地的PING命令后,ARP缓存就会存在一个目的IP的记录了。

2、使用arp -d来删除ARP高速缓存中的某一项内容

3、使用arp -s来增加高速缓冲表中的内容,这个命令需要主机名和以太网地址。新增加的内容是永久性的,除非在命令行的末尾加上关键字temp。

arp -s 157.55.85.212  00-aa-aa-562-c6-09

增加一个静态的ARP表项。

4、 arppub –s:使系统起着主机ARP代理功能。系统将回答与主机名对应的IP地址的ARP请求。

ARP其他方面

1.交换网络的嗅探

1>1.ARP协议并不只在发送了ARP请求才接收ARP应答,当计算机接收到ARP应答数据包的时候,就会对本地的ARP缓存进行更新,将应答中的IP和MAC地址存储在ARP缓存中。

因此,在上面的假设网络中,B向A发送一个自己伪造的ARP应答,而这个应答中的数据为发送方IP地址是192.168.10.3(C的IP地址),MAC地址是DD-DD-DD-DD-DD-DD(C的MAC地址本来应该是CC-CC-CC-CC-CC-CC,这里被伪造了)。当A接收到B伪造的ARP应答,就会更新本地的ARP缓存,将本地的IP-MAC对应表更换为接收到的数据格式,由于这一切都是A的系统内核自动完成的,A可不知道被伪造了。ARP欺骗的主要用途就是进行在交换网络中的嗅探。

2.IP地址冲突

1>如果网络中存在相同IP地址的主机时候,就会报告出IP地址冲突的警告。

2>如何产生?

Ø  比如某主机B规定IP地址为192.168.0.1,如果它处于开机状态,那么其他机器A更改IP地址为192.168.0.1就会造成IP地址冲突。

Ø  其原理是:主机A在连接网路(或更改IP地址)的时候就会向网络发送ARP包广播自己的IP地址,也就是free arp(免费ARP)。如果网络中存在相同IP地址的主机B,那么B就会通过ARP来reply该地址,当A接收到这个reply后,A就会跳出IP地址冲突的警告,当然B也会有警告。因此用ARP欺骗可以来伪造这个ARP reply,从而使目标一直遭受IP地址冲突警告的困扰。

3.阻止目标的数据包通过网关

1>比如在一个局域网内通过网关上网,那么局域网内的计算机上的ARP缓存中就存在网关的IP-MAC对应记录。

2>如果,该记录被更改,那么该计算机向外发送的数据包总是发送到了错误的网关硬件地址上,这样,该计算机就不能上网了。

3>这里也主要是通过ARP欺骗进行的。有两种方法达到这样的目的:

Ø  向目标发送伪造的ARP应答数据包,其中发送方的IP地址为网关的地址,而MAC地址则为一个伪造的地址。当目标接收到ARP包,那么就更新自身的ARP缓存。如果该欺骗一直持续下去,那么目标的网关缓存一直是一个被伪造的错误记录。不过,如果使用arp –a,就知道问题所在了。

Ø  第二种方法是欺骗网关。向网关发送伪造的ARP应答数据包,其中发送方的IP地址为目标的IP地址,而MAC地址则为一个伪造的地址。这样,网关上的目标ARP记录就是一个错误的,网关发送给目标的数据报都是使用了错误的MAC地址。这种情况下,目标能够发送数据到网关,却不能接收到网关的任何数据。同时,目标自己查看arp –a却看不出任何问题来。

4.通过检测混杂模式节点

1>在混杂模式中,网卡进行包过滤不同于普通模式。本来在普通模式下,只有本地地址的数据包或者广播(多播等)才会被网卡提交给系统核心,否则的话,这些数据包就直接被网卡抛弃。现在,混合模式让所有经过的数据包都传递给系统核心,然后被sniffer(嗅探器)等程序利用。   

2>通过特殊设计的ARP请求可以用来在一定程度上检测处于混杂模式的节点,比如对网络中的每个节点都发送MAC地址为FF-FF-FF-FF-FF-FE的ARP请求。对于网卡来说这不是一个广播地址(FF-FF-FF-FF-FF-FF),所以处于普通模式的节点就会直接抛弃该数据包,但是多数操作系统核心都认为这是一个广播地址,如果有一般的sniffer程序存在,并设置网卡为混杂模式,那么系统核心就会作出应答,这样就可以判断这些节点是否存在嗅探器了。

3>可以查看,很多基于ARP的攻击都是通过ARP欺骗实现的。至于ARP欺骗的防范,还是尽可能使用静态的ARP。对于WIN,使用arp -s来进行静态ARP的设置。

当然,如果能够完全使用静态的IP+MAC对应,就更好了,因为静态的ARP缓存只是相对的。当然,可以有一些方法来实现ARP欺骗的检测。设置一个ARP的嗅探器,其中维护着一个本地网络的IP-MAC地址的静态对应表,查看所有经过的ARP数据,并检查其中的IP-MAC对应关系,如果捕获的IP-MAC对应关系和维护的静态对应关系对应不上,那么就表明是一个欺骗的ARP数据包了

时间: 2024-08-25 06:00:35

ARP协议的相关文章

arp协议及运用

Arp协议和Arp欺骗 今天更深入了解网络的传输的原理.如两台计算机建立连接的过程:两台计算机之间通信,在数据链路层转发靠MAC地址,在网络传输则靠IP地址.但是在两台计算机建立连接之前,只知道对方的IP地址,那么要怎么样获取对方的MAC地址呢? 这时就要先发一个ARP数据包,来获取对方的MAC地址. 地址解析协议, 即ARP(AddressResolution Protocol),是根据IP地址获取物理地址的一个TCP/IP协议.主机发送信息时将包含目标IP地址的ARP请求广播到网络上的所有主

TCP/IP详解学习笔记(3)-IP协议,ARP协议,RARP协议

转http://blog.csdn.net/goodboy1881/article/details/668556 —————————————————————————————————————————————————————— 把这三个协议放到一起学习是因为这三个协议处于同一层,ARP协议用来找到目标主机的Ethernet网卡Mac地址,IP则承载要发送的消息.数据链路层可以从ARP得到数据的传送信息,而从IP得到要传输的数据信息. 1.IP协议 IP协议是TCP/IP协议的核心,所有的TCP,UD

图解ARP协议(三)ARP防御篇-如何揪出&quot;内鬼&quot;并&quot;优雅的还手&quot;

一.ARP防御概述 通过之前的文章,我们已经了解了ARP攻击的危害,黑客采用ARP软件进行扫描并发送欺骗应答,同处一个局域网的普通用户就可能遭受断网攻击.流量被限.账号被窃的危险.由于攻击门槛非常低,普通人只要拿到攻击软件就可以扰乱网络秩序,导致现在的公共网络.家庭网络.校园网.企业内网等变得脆弱无比. 所以,如何进行有效的ARP防御?作为普通用户怎么防御?作为网络/安全管理员又怎么防御?有哪些ARP防御软件?如果被ARP攻击了,如何揪出"内鬼",并"优雅的还手"?

ARP协议详解

ARP协议简介 IP地址属于网络层,但ip地址在传输的时候需要跨越不同的物理网络进行交换,此时如果一台主机要将一个帧发送到另一台主机,光知道其ip地址是不够的,还需要知道其有效的“硬件地址”. ARP(地址解析协议)就提供了一种在32位IPv4地址和以太网的48位MAC地址(硬件地址)之间的映射. ARP提供的是网络层地址到相关硬件地址的“动态映射”,即:会自动执行和随时间变化,而不需要系统管理员的配置.(如一台一台主机改变了它的网卡后(mac地址改变),ARP可以在一定延时后继续正常工作) 整

Lvs原理及部署之ARP协议

1.什么使ARP协议 ARP协议,全称"Address Resolution Protocol" ,中文名是地址解析协议,使用ARP协议可实现通过IP地址获得对应的物理地址(MAC地址). 在TCP/IP的网络环境下,每个联网的主机都会被分配一个32位的IP地址,这种互联网地址是在网际范围标识主机的一种逻辑地址.为了让报文在物理网络上传输,还必须要知道对方目的主机的物理地址(MAC)才行.这样就存在把IP地址转换成物理地址的地址转换的问题. 我们以以太网环境为例说明,为了正确地向目的主

ARP协议及ARP欺骗详解

ARP协议及ARP欺骗详解 地址解析协议,即ARP(Address Resolution Protocol),是根据IP地址获取物理地址的一个TCP/IP协议.主机发送信息时将包含目标IP地址的ARP请求广播到网络上的所有主机,并接收返回消息,以此确定目标的物理地址:收到返回消息后将该IP地址和物理地址存入本机ARP缓存中并保留一定时间,下次请求时直接查询ARP缓存以节约资源.ARP缓存是个用来储存IP地址和MAC地址的缓冲区,其本质就是一个IP地址-->MAC地址的对应表,表中每一个条目分别记

浅谈ARP协议以及应用

0. 前言 本章主要简单的介绍ARP的协议格式,主机如何发送和处理ARP报文,以及免费ARP. 1. ARP协议原理 ARP,全称Address Resolution Protocol,地址解析协议,在网络中,有IP地址和MAC地址,在链路层发送报文时使用的是MAC硬件地址,这时需要将IP地址转换为48bit MAC地址,这就会使用到ARP协议. 如下,有两台主机,239主机ping向238主机.当本地ARP缓存中没有238主机对应的项时,会发起ARP广播请求,之后使用arp命令查看ARP缓存,

Networking - ARP 协议

ARP 协议概述 ARP(Address Resolution Protocol),即地址解析协议,用于把 IP 地址映射到物理地址.网段上的每台主机都维护着一个被称为 ARP Table 或 ARP Cache 的表格,其中包含着网段上其他主机的 IP 地址与物理地址的对应关系.当主机需要向网段上的其他主机发送数据时,它会查看 ARP Cache 来获得目的的物理地址.ARP 缓存是动态变化的.如果要接收数据的地址当前并不存在于 ARP Cache,主机就会广播一个 ARP 请求帧.ARP 请

6.HCNA-HNTD——ARP协议

网络设备有数据要发送给另一台网络设备时,必须要知道对方的网络层地址(即IP地址).IP地址由网络层来提供,但是仅有IP地址是不够的,IP数据报文必须封装成帧才能通过数据链路进行发送.数据帧必须要包含目的MAC地址,因此发送端还必须获取目的MAC地址.通过目的IP地址而获取目的MAC地址的过程是由ARP(Address Resolution Protocol)协议来实现的. 学习目标: 1. 掌握ARP的工作原理 2. 理解ARP缓存表的作用 一台网络设备要发送数据给另一太网络设备时,必须要知道对