8
十二

什么是ARP RARP

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

RARP(Reverse Address Resolution Protocol):反向地址转换协议
反向地址转换协议(RARP)允许局域网的物理机器从网关服务器的 ARP 表或者缓存上请求其 IP 地址。网络管理员在局域网网关路由器里创建一个表以映射物理地址(MAC)和与其对应的 IP 地址。当设置一台新的机器时,其 RARP 客户机程序需要向路由器上的 RARP 服务器请求相应的 IP 地址。假设在路由表中已经设置了一个记录,RARP 服务器将会返回 IP 地址给机器,此机器就会存储起来以便日后使用。

ARP是在仅知道主机的IP地址时确定其物理地址的一种协议。因IPv4和以太网的广泛应用,其主要用作将IP地址翻译为以太网的MAC地址,但其也能在ATM和FDDIIP网络中使用。从IP地址到物理地址的映射有两种方式:表格方式和非表格方式。
ARP具体说来就是将网络层(IP层,也就是相当于OSI的第三层)地址解析为数据连接层(MAC层,也就是相当于OSI的第二层)的MAC地址。
假设:
计算机A的IP为192.168.1.1,MAC地址为00-11-22-33-44-01;
计算机B的IP为192.168.1.2,MAC地址为00-11-22-33-44-02;

ARP工作原理
在TCP/IP协议中,A给B发送IP包,在包头中需要填写B的IP为目标地址,但这个IP包在以太网上传输的时候,还需要进行一次以太包的封装,在这个以太包中,目标地址就是B的MAC地址。
计算机A是如何得知B的MAC地址的呢?解决问题的关键就在于ARP协议。
在A不知道B的MAC地址的情况下,A就广播一个ARP请求包,请求包中填有B的IP(192.168.1.2),以太网中的所有计算机都会接收这个请求,而正常的情况下只有B会给出ARP应答包,包中就填充上了B的MAC地址,并回复给A。
A得到ARP应答后,将B的MAC地址放入本机缓存,便于下次使用。
本机MAC缓存是有生存期的,生存期结束后,将再次重复上面的过程。
ARP协议并不只在发送了ARP请求才接收ARP应答。当计算机接收到ARP应答数据包的时候,就会对本地的ARP缓存进行更新,将应答中的IP和MAC地址存储在ARP缓存中。因此,当局域网中的某台机器B向A发送一个自己伪造的ARP应答,而如果这个应答是B冒充C伪造来的,即IP地址为C的IP,而MAC地址是伪造的,则当A接收到B伪造的ARP应答后,就会更新本地的ARP缓存,这样在A看来C的IP地址没有变,而它的MAC地址已经不是原来那个了。由于局域网的网络流通不是根据IP地址进行,而是按照MAC地址进行传输。所以,那个伪造出来的MAC地址在A上被改变成一个不存在的MAC地址,这样就会造成网络不通,导致A不能Ping通C!这就是一个简单的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和RARP使用相同的报头结构,如图1所示。

硬件类型

协议类型

硬件地址长度

协议长度

操作类型

发送方的硬件地址(0-3字节)

源物理地址(4-5字节)

源IP地址(0-1字节)

源IP地址(2-3字节)

目标硬件地址(0-1字节)

目标硬件地址(2-5字节)

目标IP地址(0-3字节)

(图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地址。

精彩文章

  • 位置式PID控制算法
    输出值与阀门开度一一对应,所以称为位置式PID控制算法。...
  • 不一样的一天
    为什么不一样呢?因为天明了,又黑了,然后又亮了!——日全食。 传说中五百年一次的日全食...
  • 利用autotools生成Makefile
    对于一个较大的项目而言,完全手动建立Makefile是一件费力而又容易出错的工作。aut...
  • 霍尔传感器
    霍尔传感器是一种磁传感器。用它可以检测磁场及其变化,可在各种与磁场有关的场合中使用。霍尔...
  • 让WordPress支持中文tag和链接
    有的人用文章名做固定链接(%postname%),但是汉字标题出来后,地址栏的链接就变为...
  • 视频采集设备的标准采集分辨率
    QCIF全称Quarter common intermediate format。QCI...
  • Apache mod_rewrite 实现301重定向
    它提供了一个基于正则表达式分析器的重写引擎来实时重写URL请求。它支持每个完整规则可以拥...
  • Linux网络配置详解
    从linux诞生的那一天起,就注定了它的网络功能空前地强大.所以在linux系统中如何配...
  • 数字压缩编码技术
    数字信号有很多优点,但当模拟信号数字化后其频带大大加宽,一路6MHz的普通电视信号数字...
  • 光电编码器的特性及应用
    光电编码器,是一种通过光电转换将输出轴上的机械几何位移量转换成脉冲或数字量的传感器。这是...
Category : TCP/IP

11 Responses to “地址解析协议ARP和反向地址解析协议RARP”


aify 09/12/2009

前段时间刚好看了,今天在看看,差不多都记住了

Notify
免费小说 09/12/2009

看不懂。。。

Notify
TCP/IP协议 09/12/2009

ARP攻击,就是抓住了ARP协议无验证机制这一BUG

Notify
美女明星 10/12/2009

传说中的天书。。。春哥赐予我力量吧

Notify
手机 10/12/2009

IP送上

Notify
小游戏 10/12/2009

博主是牛人

Notify
我心疯狂 10/12/2009

这个在计算机书上看过,但是没你这详细,学习了

Notify
喵喵呜 14/12/2009

OMG~~~这些对我来讲简直就是天文~~~!!

Notify
88la 16/12/2009

不是太懂…….

Notify
科士威加盟 03/03/2010

这个我在书上看过

Notify
he 01/04/2010

又加深了印象。

Notify