一. 总述

简单的说,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. Zabbix监控华为交换机

    一.    监控交换机首先要在交换机开通snmp协议. 有两种方式开通,web界面,及交换机的配置界面 Web界面开通: 交换机配置界面 有web界面的,使用web界面相对简单,本项目就是用web界面 ...

  2. About ListView

    这一篇整理一些ListView的基本知识. PartA翻译自API Guide: (A)API Guide 使用Adapter建立(bind)Layout 当layout内容是动态的或者不是预先决定好 ...

  3. k8s-集群状态及部署一个实例

    [root@k8s-master ~]# kubectl get csNAME STATUS MESSAGE ERRORcontroller-manager Healthy ok scheduler ...

  4. MySQL-计算7月重新激活客户第二种方法_20161022

    上周日休假去广西玩了一周,回来继续. (一)上次用的是取当月首单日期,往前推30天 代码比较繁琐 这次方法是借助变量 错行进行判断 一个用户上次最后一次下单时间和下次下单时间的时间差 也就是形成一个相 ...

  5. Python实例浅谈之五Python守护进程和脚本单例运行

    一.简介 守护进程最重要的特性是后台运行:它必须与其运行前的环境隔离开来,这些环境包括未关闭的文件描述符.控制终端.会话和进程组.工作目录以及文件创建掩码等:它可以在系统启动时从启动脚本/etc/rc ...

  6. Java Security(JCE基本概念)

    Java Security网络环境中的安全隐患计算机安全OSI参考结构模型五类安全服务八类安全机制网络环境中的安全隐患1. 存储问题: 移动存储设备存储数据没有加密存在的安全隐患 2. 通信问题: 用 ...

  7. java 基础知识学习 内存泄露(memory leak) VS 内存溢出(out of memory)以及内存管理

    内存泄露(memory leak) VS 内存溢出(out of memory) 内存溢出 out of memory,是指程序在申请内存时,没有足够的内存空间供其使用,出现out of memory ...

  8. 转载:数据库应用开发工具Toad使用笔记

    由于网上TOAD中文教程很少,在网上摘抄了此文章便于学习,感谢原创者. TOAD使用笔记 1.把鼠标停在sql所在行,然后ctrl+Enter直接执行当前sql. 2.解决Toad对中文显示乱码问题( ...

  9. SpringMVC前置控制器SimpleUrlHandlerMapping配置

    1. <?xml version="1.0" encoding="UTF-8"?> <web-app version="2.5&qu ...

  10. Weblogic学习

    1.WebLogic目录介绍:     coherence:集群组件 modules:第三方的模块包 user_projects:存放域的文件夹(必须要创建域) utils 工具包 uninstall ...