TCP/IP详解--第五章
第5章 RARP:逆地址解析协议
5.1 引言
具有本地磁盘的系统引导时,一般是从磁盘上的配置文件中读取 I P地址。但是无盘机, 如X终端或无盘工作站,则需要采用其他方法来获得 IP地址。
网络上的每个系统都具有唯一的硬件地址,它是由网络接口生产厂家配置的。无盘系统 的RARP实现过程是从接口卡上读取唯一的硬件地址,然后发送一份 RARP请求(一帧在网络 上广播的数据),请求某个主机响应该无盘系统的 IP地址(在 RARP应答中)。
在概念上这个过程是很简单的,但是实现起来常常比 ARP要困难,其原因在本章后面介 绍。RARP的正式规范是 RFC 903 [Finlayson et al. 1984]。
5.2 RARP的分组格式
RARP分组的格式与 ARP分组基本一致(见图 4-3)。它们之间主要的差别是 RARP请求或 应答的帧类型代码为0x8035,而且 RARP请求的操作代码为 3,应答操作代码为 4。
对应于 ARP,RARP请求以广播方式传送,而 RARP应答一般是单播 (unicast)传送的。
5.3 RARP举例
在互联网中,我们可以强制 sun主机从网络上引导,而不是从本地磁盘引导。如果在主 机bsdi上运行 RARP服务程序和 tcpdump命令,就可以得到如图 5-1那样的输出。用 -e参数使 得tcpdump命令打印出硬件地址:
图5-1 RARP请求和应答
RARP请求是广播方式(第 1行),而第 2 行的 RARP应答是单播方式。第 2 行的输出中 at sun表示RARP应答包含主机 sun的IP地址( 140.252.13.33)。
在第3行中,我们可以看到,一旦 sun收到IP地址,它就发送一个 TFTP读请求( RRQ)给 文件 8CFC0D21.SUN4C (TFTP表示简单文件传送协议。我们将在第 15章详细介绍)。文件名 中的 8个十六进制数字表求主机 sun的IP地址 140.252.13.33。这个 IP地址在 RARP应答中返回。 文件名的后缀 SUN4C表示被引导系统的类型。
tcpdump在第3行中指出IP数据报的长度是65个字节,而不是一个UDP数据报(实际上是一 个UDP数据报),因为我们运行tcpdump命令时带有- e参数,以查看硬件层的地址。在图5-1中
48 TCP/IP详解,卷1:协议
下载
需要指出的另一点是,第2行中的以太网数据帧长度比最小长度还要小(在4.5节中我们说过应该
是60字节)。其原因是我们在发送该以太网数据帧的系统(bsdi)上运行tcpdump命令。应用程 序rarpd写42字节到BSD分组过滤设备上(其中14字节为以太网数据帧的报头,剩下的28字节是 RARP应答),这就是tcpdump收到的副本。但是以太网设备驱动程序要把这一短帧填充空白字 符以达到最小传输长度(60)。如果我们在另一个系统上运行tcpdump命令,其长度将会是60。
从这个例子可以看出,当无盘系统从 RARP应答中收到它的 IP地址后,它将发送 TFTP请 求来读取引导映象。在这一点上我们将不再进一步详细讨论无盘系统是如何引导的(第 16章 将描述无盘 X终端利用 RARP、BOOTP以及TFTP进行引导的过程)。
当网络上没有RARP服务器时,其结果如图5-2所示。每个分组的目的地址都是以太网广播地址。在who- 后面的以太网地址是目的硬件地址,跟在tell后面的以太网地址是发送端的硬件地址。 请注意重发的频度。第一次重发是在 6.55秒以后,然后增加到 42.80秒,然后又减到 5.34 秒和 6.55秒,然后又回到 42.79秒。这种不确定的情况一直继续下去。如果计算一下两次重发 之间的时间间隔,我们发现存在一种双倍的关系:从 5.34到6.55是1.21 秒,从 6.55到8.97是
2 . 4 2秒,从 8 . 9 7 到 1 3 . 8 0是 4 . 8 3 秒,一直这样继续下去。当时间间隔达到某个阈值时(大于
42.80秒),它又重新置为 5.34秒。
图5-2 网络中没有RARP服务器的RARP请求
超时间隔采用这样的递增方法比每次都采用相同值的方法要好。在图 6-8中,我们将看到 一种错误的超时重发方法,以及在第 21章中将看到 TCP的超时重发机制。
5.4 RARP服务器的设计
虽然 RARP在概念上很简单,但是一个 RARP服务器的设计与系统相关而且比较复杂。相 反,提供一个 ARP服务器很简单,通常是 TCP/IP 在内核中实现的一部分。由于内核知道 IP地
第5章 RARP:逆地址解析协议 49
下载
址和硬件地址,因此当它收到一个询问 IP地址的 ARP请求时,只需用相应的硬件地址来提供
应答就可以了。
5.4.1 作为用户进程的RARP服务器
RARP服务器的复杂性在于,服务器一般要为多个主机(网络上所有的无盘系统)提供硬 件地址到 IP地址的映射。该映射包含在一个磁盘文件中(在 Unix系统中一般位于 /etc/ethers目 录中)。由于内核一般不读取和分析磁盘文件,因此 RARP服务器的功能就由用户进程来提供, 而不是作为内核的 TCP/IP实现的一部分。
更为复杂的是, RARP请求是作为一个特殊类型的以太网数据帧来传送的(帧类型字段值 为0x8035,如图2-1所示)。这说明RARP服务器必须能够发送和接收这种类型的以太网数据帧。 在附录 A中,我们描述了 BSD分组过滤器、 Sun的网络接口栓以及 SVR4数据链路提供者接口 都可用来接收这些数据帧。由于发送和接收这些数据帧与系统有关,因此 RARP服务器的实现 是与系统捆绑在一起的。
5.4.2 每个网络有多个RARP服务器
RARP服务器实现的一个复杂因素是 RARP请求是在硬件层上进行广播的,如图 5-2所示。 这意味着它们不经过路由器进行转发。为了让无盘系统在 RARP服务器关机的状态下也能引导, 通常在一个网络上(例如一根电缆)要提供多个 RARP服务器。
当服务器的数目增加时(以提供冗余备份),网络流量也随之增加,因为每个服务器对每 个RARP请求都要发送 RARP应答。发送 RARP请求的无盘系统一般采用最先收到的 RARP应答
(对于 ARP,我们从来没有遇到这种情况,因为只有一台主机发送 ARP应答)。另外,还有一种可能发生的情况是每个 RARP服务器同时应答,这样会增加以太网发生冲突的概率。
5.5 小结
RARP协议是许多无盘系统在引导时用来获取 IP地址的。 RARP分组格式基本上与 ARP分 组一致。一个 RARP请求在网络上进行广播,它在分组中标明发送端的硬件地址,以请求相应 IP地址的响应。应答通常是单播传送的。
RARP带来的问题包括使用链路层广播,这样就阻止大多数路由器转发 RARP请求,只返 回很少信息:只是系统的 IP地址。在第 16章中,我们将看到 BOOTP在无盘系统引导时会返回 更多的信息: IP地址和引导主机的名字等。
虽然 RARP在概念上很简单,但是 RARP服务器的实现却与系统相关。因此,并不是所有 的TCP/IP实现都提供 RARP服务器。
习题
5.1 RARP需要不同的帧类型字段吗? ARP和RARP都使用相同的值 0x0806吗?
5.2 在一个有多个 RARP服务器的网络上,如何防止它们的响应发生冲突?
TCP/IP详解--第五章相关推荐
- TCP/IP详解--第十七章
第17章 TCP:传输控制协议 17.1 引言 本章将介绍 TCP为应用层提供的服务,以及 TCP首部中的各个字段.随后的几章我们在了 解TCP的工作过程中将对这些字段作详细介绍. 对TC ...
- TCP/IP详解--第三章
第3章 IP:网际协议 3.1 引言 IP是TCP/IP协议族中最为核心的协议.所有的 TCP.UDP.ICMP及IGMP数据都以 IP数据 报格式传输(见图 1-4).许多刚开始接触 TCP/ ...
- TCP/IP详解笔记----第一章:概述
第一章 概述 这一章主要介绍了TCP/IP的概貌.包括分层.网络地址.客户-服务器模型.常见知名应用层服务端口号等等.需要重点掌握和了解的是以下知识点. 1.TCP/IP的重要作用: 很多不同厂商生产 ...
- TCP/IP详解 第七章 防火墙和网络地址转换(1)
一.引言 1.Internet和协议发展初期,仅用于大学和科研机构.处于没人攻击状态. 2.20世纪80.90年代,成功的攻击成了家常便饭.为了解决这个问题,引入了防火墙. Ø 了解防火墙 l 用一种 ...
- TCP/IP详解--第十一章
第11章 UDP:用户数据报协议 11.1 引言 UDP是一个简单的面向数据报的运输层协议:进程的每个输出操作都正好产生一个 UDP . 数据报,并组装成一份待发送的 I P 数据报 ...
- TCP/IP详解--第七章
第7章 Ping程序 7.1 引言 "ping"这个名字源于声纳定位操作.Ping程序由MikeMuuss 编写,目的是为了测试另一 台主机是否可达.该程序发送一份 IC ...
- TCP/IP详解--第四章
第4章 ARP:地址解析协议 4.1 引言 本章我们要讨论的问题是只对 TCP/IP协议簇有意义的 IP 地址.数据链路如以太网或令牌 环网都有自己的寻址机制(常常为 48 bit 地址),这是使 ...
- TCP/IP详解第一卷第一章重点摘要
一.协议族 一系列相关协议的集合称为协议族 指定一个协议族中的各种协议之间的相互关系并划分需要完成的任务设计,称为协议族的体系结构或参考模型 二.TCP/IP TCP/IP是一个开放的系统,协议族定义 ...
- TCP/IP详解--第六章
第6章 ICMP:Internet控制报文协议 6.1 引言 I C M P 经常被认为是 I P 层的一个组成部分.它传递差错报文以及其他需要注意的信息. ICMP报文通常被 IP 层或更高 ...
最新文章
- 新的工作电脑 神州优雅A550-i7
- 【模板】扩展中国剩余定理(EXCRT)
- 内存泄漏MobX State Tree_[译]iOS Crash Dump Analysis 错误的内存崩溃
- Django学习手册 - ORM数据类型
- 代码大全 MSIL语言程序设计
- android布局的一些知识
- 数据库有哪些分类?应该怎样选择?终于有人讲明白了
- 点击图片旋转180_一起来点亮斗门!请你旋转手机屏幕90横屏并点击图片!
- Repository和dao
- Android项目实战(三十四):蓝牙4.0 BLE 多设备连接
- Diffusion model—扩散模型
- 关于Cisco ASDM中配置STATIC NAT顺序的问题-By 年糕泰迪
- html左侧浮动广告代码,纯js网页浮动广告代码
- MySQL 案例实战--MySQL数据库主从复制
- 看到网友晒了新抱枕,我也想换个新的了
- 安卓10.1寸大屏车载导航
- js中根据特定字符截取字符串
- varchar和text的区别
- C语言中fprintf函数的使用介绍
- CarAudio音量调节详解