查看: 16658|回复: 13

[原创]ARP协议解码详解

[复制链接]
发表于 2006-7-20 16:08:10 | 显示全部楼层 |阅读模式
ARP协议解码详解

一、ARP协议简介

ARP,全称Address Resolution Protocol,中文名为地址解析协议,它工作在数据链路层,在本层和硬件接口联系,同时对上层提供服务。
IP数据包常通过以太网发送,以太网设备并不识别32位IP地址,它们是以48位以太网地址传输以太网数据包。因此,必须把IP目的地址转换成以太网目的地址。在以太网中,一个主机要和另一个主机进行直接通信,必须要知道目标主机的MAC地址。但这个目标MAC地址是如何获得的呢?它就是通过地址解析协议获得的。ARP协议用于将网络中的IP地址解析为的硬件地址(MAC地址),以保证通信的顺利进行。

1.  ARP和RARP报头结构

ARP和RARP使用相同的报头结构,如图1所示。


(图1 ARP/RARP报头结构)

硬件类型字段:指明了发送方想知道的硬件接口类型,以太网的值为1;

协议类型字段:指明了发送方提供的高层协议类型,IP为0800(16进制);

硬件地址长度和协议长度:指明了硬件地址和高层协议地址的长度,这样ARP报文就可以在任意硬件和任意协议的网络中使用;
       
操作字段:用来表示这个报文的类型,ARP请求为1,ARP响应为2,RARP请求为3,RARP响应为4;
       
发送方的硬件地址(0-3字节):源主机硬件地址的前3个字节;
       
发送方的硬件地址(4-5字节):源主机硬件地址的后3个字节;
       
发送方IP(0-1字节):源主机硬件地址的前2个字节;
       
发送方IP(2-3字节):源主机硬件地址的后2个字节;
       
目的硬件地址(0-1字节):目的主机硬件地址的前2个字节;
       
目的硬件地址(2-5字节):目的主机硬件地址的后4个字节;
       
目的IP(0-3字节):目的主机的IP地址。

2.  ARP和RARP的工作原理

ARP的工作原理如下:

1.  首先,每台主机都会在自己的ARP缓冲区 (ARP Cache)中建立一个 ARP列表,以表示IP地址和MAC地址的对应关系。

2.  当源主机需要将一个数据包要发送到目的主机时,会首先检查自己 ARP列表中是否存在该 IP地址对应的MAC地址,如果有﹐就直接将数据包发送到这个MAC地址;如果没有,就向本地网段发起一个ARP请求的广播包,查询此目的主机对应的MAC地址。此ARP请求数据包里包括源主机的IP地址、硬件地址、以及目的主机的IP地址。

3.  网络中所有的主机收到这个ARP请求后,会检查数据包中的目的IP是否和自己的IP地址一致。如果不相同就忽略此数据包;如果相同,该主机首先将发送端的MAC地址和IP地址添加到自己的ARP列表中,如果ARP表中已经存在该IP的信息,则将其覆盖,然后给源主机发送一个 ARP响应数据包,告诉对方自己是它需要查找的MAC地址;
4.        源主机收到这个ARP响应数据包后,将得到的目的主机的IP地址和MAC地址添加到自己的ARP列表中,并利用此信息开始数据的传输。如果源主机一直没有收到ARP响应数据包,表示ARP查询失败。

RARP的工作原理:

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

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

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

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

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

二、解码详解

了解了ARP和RARP协议的报头结构和工作原理后,我们使用科来网络分析系统抓取ARP包,其详细解码,如图1,
  

(图1 科来网络分析系统中ARP请求包详细解码)

图1显示是一个ARP的请求包的解码,下面我们来详细说明:

硬件类型:1,表示硬件借口类型为以太网类型
       
协议类型:0x0800,表示发送方提供的高层协议类型是IP
       
硬件地址长度:表示硬件地址长度为6字节=48位
       
协议地址长度:表示IP地址长度为4字节=32位
       
操作类型:1,表示ARP请求
       
源物理地址:00:14:85:CA:F5:22
       
源IP地址:192.168.0.92
       
目标物理地址:00:00:00:00:00:00
       
目标IP地址:192.168.0.208

ARP回应包和RARP的包类似,我们在这里就不再重复说明。

[ 本帖最后由 菜青虫 于 2006-7-20 16:11 编辑 ]

本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有账号?CSNA会员注册

×
回复

使用道具 举报

发表于 2006-7-20 23:39:17 | 显示全部楼层
hehe   kan kan
回复

使用道具 举报

发表于 2006-7-21 14:32:28 | 显示全部楼层
我好像在好几个板块都看到了
回复

使用道具 举报

发表于 2006-7-22 06:52:58 | 显示全部楼层
下来看看啊  正在学习中,
回复

使用道具 举报

 楼主| 发表于 2006-7-24 11:21:47 | 显示全部楼层
补充:ARP的三中类型

1.  常规ARP

一般是站点在只需要获得其他主机的MAC地址时使用它。

2.  免费ARP

免费ARP允许站点为其自己的IP地址传输一个ARP请求。免费ARP用于检查IP子网中的重复IP地址。如果一台主机发出了其自己的ARP请求,并收到了另一站点的响应,该主机就得知已经有另一站点和和它一样的地址配置。这种情况称IP冲突。像我们只用Windows主机在启动时对冲突IP地址分配进行检查,使用的就是免费ARP技术。

3.  代理ARP

如果ARP请求是从一个网络的主机发往另一个网络上的主机,那么连接这两个网络的路由器就可以回答该请求,这个过程叫做ARP代理。这样可以欺骗发起ARP请求的发送端,使它误以为路由器就是目的主机,而事实上目的主机是在路由器的“另一边”。路由器的功能相当于目的主机的代理,把分组从其他主机转发给它。

代理ARP知道如何到达子网,则允许主机回答ARP请求。使用不正确的子网掩玛的主机可能可以与非本地子网的主机通信,因为本地路由器可以响应非本地子网的ARP请求。代理ARP可以允许错误的IP配置工作。假设使用子网掩码255.255.0.0的主机172.167.1.10在本地子网172.16.1.0(掩码255.255.255.0),这台主机会认为这个网络是172.16.0.0,但是实际是172.16.1.0。当他想访问IP地质为172.16.2.0的主机时,它会广播一个ARP请求来尝试获得目的主机的MAC地址。因为根据他的掩码,他认为目的主机是在同一本地子网内。如果路由器打开了代理ARP,就会用它的MAC地址来响应ARP请求。而那台主机认为它收到的是目的主机对其ARP请求的响应,所以把报文发送到路由器的MAC地址。如果删除了路由器子网上的代理ARP配置,原来依靠他的客户端就不能访问非本地的网络了,直到把子网掩码修改正确。
回复

使用道具 举报

发表于 2007-3-15 18:49:51 | 显示全部楼层
GOOD THANK YOU!
回复

使用道具 举报

发表于 2008-7-23 10:44:55 | 显示全部楼层
下来看看啊  正在学习中,
回复

使用道具 举报

发表于 2011-1-21 21:58:20 | 显示全部楼层
谢谢lz
回复

使用道具 举报

发表于 2011-1-22 16:33:12 | 显示全部楼层
.........nei rong tai shao le.........
回复

使用道具 举报

发表于 2011-1-22 20:25:48 | 显示全部楼层
要对ARP好好的研究下
回复

使用道具 举报

发表于 2011-6-22 16:48:26 | 显示全部楼层
学习,多谢LZ
回复

使用道具 举报

发表于 2011-6-26 10:33:52 | 显示全部楼层
这个得认真学习了!



























SIGNATURE---------------------------One thing you should know,for his part, spend not the problem,he just wanted to win,thank him bring you the momentNike Free 3.0Nike Free Run 2Nike Free Run
回复

使用道具 举报

发表于 2011-6-29 23:19:50 | 显示全部楼层
低调回贴,沉默做人
回复

使用道具 举报

发表于 2011-8-23 11:37:22 | 显示全部楼层
支持一下原创
回复

使用道具 举报

您需要登录后才可以回帖 登录 | CSNA会员注册

本版积分规则

快速回复 返回顶部 返回列表