一. 总述

简单的说,ARP协议就是将IP地址转换为MAC物理地址;而RARP,就是ARP的逆向,也就是将MAC物理地址转换为IP地址。看起来这两个协议是完全对称的,但发明这两个协议的初衷基本上没有什么关系。ARP协议是为了在链接层中传输的datagram只能识别MAC地址,所以只能将IP地址转换为MAC物理地址再进行传输和定向;RARP协议是为了获取无磁盘操作系统的IP地址而设计的。具有本地磁盘的系统通常是从磁盘中的配置文件中读取IP地址的,但是无盘系统无法这样操作,所以就需要将MAC地址转换成IP地址了。

再介绍一下无盘系统。比如有些网吧的机器本身没有硬盘,而是通过局域网连接到服务器。从这些机器上看到的磁盘实际上是共享的服务器的磁盘。

二. ARP协议

(一)ARP介绍

ARP协议将IP地址转化为MAC物理地址。网络体系结构自上而下可以大致分成四层:应用层,传输层,网络层,链接层。数据传输的过程也是从上至下,最后在链接层之间进行数据交换。当数据包从网络层将要进入链接层时,这个数据包只有目的地的IP地址,这时链接层就不清楚这个IP地址是什么了,就好像接口不统一的手机和充电器无法连接一样。这时,ARP server就派上用场了。ARP server先将目的地的IP地址转换成物理地址,发出一个ARP request,这个request是个没有指定目的地的广播,当网络中有匹配的物理地址时,就将这个物理地址返回,即ARP reply,但ARP reply是有明确的目标地址的,是单播。这时,数据包就有方向了,就可以继续向目的地进发了。

(二)ARP Cache

缓存的思想无处不在。IP地址对应MAC物理地址,ARP Cahe中存储的就是这些mappings。有缓存自然就会有timeout,当过了某个时间间隔后,缓存就会被清除,否则缓存无限制增长是件非常可怕的事。如果需要,可以用arp命令的-s选项来添加一个永久的缓存条目。

三.RARP服务器在设计上的复杂性

RARP是将MAC物理地址转换成IP地址。RARP也有request与reply,并且RARP request也是广播,没有目标地址;RARP reply也是有目标地址,也是单播。这两点与ARP都相同。看起来虽然仅仅是ARP协议的逆向操作,但是RARP server设计的复杂性是远远超过ARP server的。首先,ARP server是存在于kernel中,而RARP server仅仅是一个用户进程,RARP就有些"先天不足"。其次,RARP是寻找与物理地址对应的IP地址,这就表明了RARP request packet包中没有IP地址,自然也就无法通过路由器进行转发了。因为路由器是工作在网络层,网络层的协议是IP协议,ARP request能够通过路由器进行转发,是因为在ARP request packet中有IP地址的字段,而RARP request packet没有,所以路由器对RARP也就没有帮助了。

RARP还有一个机制,就是在每个网络中都有多个RARP server。我猜想这可能是为了增大可靠性,是用的主从服务器的设计理念。源地址一般只接受第一个RARP reply。有多个服务器,自然也就可能出现冲突。所以RARP server是这样设计的:一般有一个主服务器是接收到request后立刻发送RARP reply,没有发送延迟;而其他的服务器即使接收到了request,也会在一个随机的发送延迟后才能发送reply,而且一般是在短时间内收到重复的第二个request才可以发送reply。因为如果这些次要的服务器都收到了第二次相同的request,那么这种情况一般是主服务器挂了。

四. ARP与RARP的比较

(一)相同点

对于ARP与RARP,request是广播,而reply是单播。

(二)不同点

1.协议的目的完全不同。在总述中已经说明。

2.发送ARP packet的是路由器,而RARP不是。

3.ARP server在kernel中,而RARP是一个用于进程。

[TCP/IP]ARP与RARP的总结的更多相关文章

  1. TCP/IP——ARP与RARP简记

    ARP(Address Resolution Protocol):ARP为IP地址到对应的硬件地址(MAC)之间提供动态映射.这个过程是自动完成的,一般应用程序用户和系统管理员不必要关心. ARP高速 ...

  2. TCP/IP||ARP/RARP

    1.ARP ARP(地址解析协议)主要为IP地址到对应的硬件提供动态映射,过程是自动完成 在网络接口有一个硬件地址(48 bit),在硬件层次上的数据帧交换必须有正确的接口地址,但是32 bit 的I ...

  3. TCP/IP ARP

    ARP(Address Resolution Protocol)地址解析协议,是根据IP地址获取物理地址的一个TCP/IP协议. 当在同一网络段内或同一子网内,主机发送信息时将包含目标IP地址的ARP ...

  4. TCP/IP五层模型

    (2)TCP/IP五层模型的协议   应用层 传输层 网络层 数据链路层 物理层   物理层:中继器.集线器.还有我们通常说的双绞线也工作在物理层 数据链路层:网桥(现已很少使用).以太网交换机(二层 ...

  5. tcp/ip详解 卷1 -- 协议概述

    第一章 概述 分层 TCP/IP 通常被认为是一个四层协议系统. 每一层负责不同的功能. 链路层, 也成为数据链路层或者网络接口层. 通常包括 操作系统中的设备驱动程序和计算机中对应的网络接口卡. 主 ...

  6. TCP/IP 协议 ----- 协议栈

    文章是作者对tcp/ip协议族的一些看法,借鉴TCP/IP详解卷一的内容,进行总结归纳,并阐述自己的一些看法. TCP/IP协议栈· : 整个协议栈被分为了四层,每一层协议负责不同的功能: 链路层:负 ...

  7. OSI 7层 TCP/IP 4层

    在网络层有{ IP协议:IP协议是用于将多个包交换网络连接起来的,它在源地址和目的地址之间传送一种称之为数据包的东西,它还提供对数据大小的重新组装功能,以适应不同网络对包大小的要求. ICMP协议:I ...

  8. TCP/IP详解学习笔记(4)-- ARP 和 RARP

    1.ARP      地址解析协议(Address Resolution Protocol,ARP)是在仅知道主机的IP地址时确地址解析协议定其物理地址的一种协议.      在TCP/IP协议中,A ...

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

    把这三个协议放到一起学习是因为这三个协议处于同一层,ARP协议用来找到目标主机的Ethernet网卡Mac地址,IP则承载要发送的消息.数据链路层可以从ARP得到数据的传送信息,而从IP得到要传输的数 ...

随机推荐

  1. Win7 下安装MongoDB

    1).下载MongoDBhttp://downloads.mongodb.org/win32/mongodb-win32-i386-2.4.5.zip 下载Windows 32-bit版本并解压缩,程 ...

  2. blog集合

    godiscoder的技术blog 一个不错的技术架构设计blog MySQLOPS 数据库与运维自动化技术分享 stone的技术blog 陈皓专栏 风雪涟漪的技术blog 华为首席科学家 张宴技术b ...

  3. Jmeter-JDBC Request

    1.  新建一个测试计划 2.  新建一个线程组 3.  创建数据库连接 4.配置数据库连接 5.添加JDBC Request 6.添加监听器

  4. 前端多媒体(2)—— xhr异步接收处理二进制数据

    有时我们需要把远程的视频.图片数据异步下载下来,然后在js里进行特殊处理.比如把VR的图片特殊处理,把不同封装格式的视频做一次 转封装 处理等等,这类操作都要先获取二进制数据,然后特殊处理. 这个时候 ...

  5. linux命令学习笔记-md5sum 命令详解

    前言 在网络传输.设备之间转存.复制大文件等时,可能会出现传输前后数据不一致的情况.这种情况在网络这种相对更 不稳定的环境中,容易出现.那么校验文件的完整性,也是势在必行的. 使用说明 md5sum命 ...

  6. OpenCV——高斯模糊与毛玻璃特效

    // define head function #ifndef PS_ALGORITHM_H_INCLUDED #define PS_ALGORITHM_H_INCLUDED #include < ...

  7. cm 安装

    为Cloudera Manager建立数据库:/usr/share/cmf/schema/scm_prepare_database.sh mysql -h[mysql数据库的主机名] -P63751 ...

  8. 「USACO08DEC」「LuoguP2921」在农场万圣节Trick or Treat on the Farm(tarjan

    题意翻译 题目描述 每年,在威斯康星州,奶牛们都会穿上衣服,收集农夫约翰在N(1<=N<=100,000)个牛棚隔间中留下的糖果,以此来庆祝美国秋天的万圣节. 由于牛棚不太大,FJ通过指定 ...

  9. Oracle字段增删改方法总结

    一.修改字段的语法:alter table tablename modify (字段名 类型 [default value][null/not null],….);有一个表名为tb,字段段名为name ...

  10. requests.session保持会话

    原文地址:https://blog.csdn.net/jyh_jack/article/details/82457953 如何使用requests后登录网站后,保持Session继续实现浏览.下载等效 ...