《网络协议》ARP 协议和 RARP 协议

来源:互联网 发布:手机有些什么编程软件 编辑:程序博客网 时间:2024/04/27 20:30

ARP 概述

       在以太网协议中规定,同一局域网中的一台主机要和另一台主机进行直接通信,必须要知道目标主机的 MAC 地址(硬件地址)。而在 TCP/IP 协议中,网络层和传输层只关心目标主机的 IP 地址。这就导致在以太网中使用 IP 协议时,数据链路层的以太网协议接到上层 IP 协议提供的数据中,只包含目的主机的 IP 地址。 ARP 是一种地址解析协议,是一个位于 TCP/IP 协议栈中低层的协议,主要是负责将 IP 地址解析为对应的 MAC 地址。ARP 协议只适用于局域网。另外,当发送主机和目的主机不在同一个局域网中时,即便知道目的主机的 MAC 地址,两者也不能直接通信,必须经过路由转发才可以。所以此时,发送主机通过 ARP 协议获得的将不是目的主机的真实 MAC 地址,而是一台可以通往局域网外的路由器的 MAC 地址。于是此后发送主机发往目的主机的所有帧,都将发往该路由器,通过它向外发送。这种情况称为 ARP 代理。


ARP 报文格式

        报文格式如下图所示:其中操作类型:代表 ARP 数据包类型;0 表示 ARP 请求数据包,1 表示 ARP 应答数据包。




ARP 工作过程

        局域网中每台主机都有一个 ARP 高速缓存,这个缓存存放的是最近发起的 IP 地址到 MAC 地址的映射记录。ARP 高速缓存中的表项一般都要设置超时值,如果一段时间内没有与某主机通信,就将该主机对应的 IP 与 MAC 之间的映射关系去掉,下次在需要通信时,依然发送广播。

       ARP的基本工作原理如下:

  1. 每台主机都会根据以往在网络中与其他主机的通信,在自己的 ARP 缓存区(ARP Cache)中建立一个 ARP 列表,以表示网络中主机 IP 地址和 MAC 地址的对应关系。
  2. 当源主机需要将一个数据包发送到目标主机时,会首先检查自己 ARP 列表中是否存在该包中所包含的目标主机 IP 地址对应的 MAC 地址。如果有,则直接将数据包发送到这个 MAC 地址主机上;如果没有,就向本地网段(局域网)发起一个 ARP 请求的广播包,查询此 IP 地址目标主机对应的 MAC 地址。此 ARP 请求数据包里包括源主机的 IP 地址、硬件地址,以及目标主机的 IP 地址。
  3. 网络中所有的主机在收到这个 ARP 请求后,会检查数据包中的目标 IP 地址是否和自己的 IP 地址一致。如果不相同就忽略此数据包;如果相同,该主机首先将源端的MAC 地址和 IP 地址的对应表项添加到自己的 ARP 列表中。如果发现 ARP 表中已经存在该 IP 地址所对应的 MAC 地址表项信息,则将其覆盖,然后给源主机发送一个ARP 响应数据包,告诉对方自己是它需要查找的 MAC 地址主机。
  4. 源主机在收到这个 ARP 响应数据包后,将得到的目标主机的 IP 地址和 MAC 地址对应表项添加到自己的 ARP 列表中,并利用此信息开始数据的传输。如果源主机一直没有收到 ARP 响应数据包,则表示 ARP 查询失败。


RARP 协议

       ARP 协议是根据 IP 地址找其对应的 MAC 地址,而 RARP 则是根据 MAC 地址找其对应 IP 地址,所以称之为"逆向 ARP"。具有本地磁盘的系统引导时,一般是从磁盘上的配置文件中读取 IP 地址,然后即可直接用 ARP 协议找出与其对应的主机 MAC 地址。但是无盘机,如 X 终端或无盘工作站,启动时是通过 MAC 地址来寻址的,这时就需要通过 RARP 协议获取 IP 地址。

       RARP 的基本工作原理如下:

  1. 发送端发送一个本地的 RARP 广播包,在此广播包中声明自己的 MAC 地址,并且请求任何收到此请求的 RARP 服务器分配一个IP地址。
  2. 本地网段上的 RARP 服务器收到此请求后,检查其 RARP 列表,查找该 MAC 地址对应的 IP 地址。如果存在,RARP 服务器就给源主机发送一个响应数据包,并将此 IP 地址提供给对方主机使用;如果不存在,RARP 服务器对此不做任何响应。
  3. 源端在收到从 RARP 服务器来的响应信息后,利用得到的 IP 地址进行通信;如果一直没有收到 RARP 服务器的响应信息,则表示初始化失败。





参考资料:
《TCP/IP 详解》
http://book.51cto.com/art/201003/191046.htm



1 0