在互联网中,我们可以强制sun主机从网络上引导,而不是从本地磁盘引导。如果在主机bsdi上运行RARP服务程序和tcpdump命令,就可以得到如图5-1那样的输出。用-e参数使得tcpdump命令打印出硬件地址:
![](https://box.kancloud.cn/2016-04-13_570de1ddde580.png)
RARP请求是广播方式(第1行),而第2行的RARP应答是单播方式。第2行的输出中atsun表示RARP应答包含主机sun的IP地址(140.252.13.33)在第3行中,我们可以看到,一旦sun收到IP地址,它就发送一个TFTP读请求(RRQ)给文件8CFC0D21.SUN4C(TFTP表示简单文件传送协议。我们将在第1 5章详细介绍)。文件名中的8个十六进制数字表求主机sun的IP地址140.252.13.33。这个IP地址在RARP应答中返回。
文件名的后缀SUN4C表示被引导系统的类型。
tcpdump在第3行中指出IP数据报的长度是65个字节,而不是一个UDP数据报(实际上是一个UDP数据报),因为我们运行tcpdump命令时带有-e参数,以查看硬件层的地址。在图5-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.42秒,从8.97到13.80是4.83秒,一直这样继续下去。当时间间隔达到某个阈值时(大于42.80秒),它又重新置为5.34秒。
![](https://box.kancloud.cn/2016-04-13_570de1e8871b3.png)
超时间隔采用这样的递增方法比每次都采用相同值的方法要好。在图6-8中,我们将看到一种错误的超时重发方法,以及在第21章中将看到TCP的超时重发机制。
- 第1章 概述
- 1.1 引言
- 1.2 分层
- 1.3 TCP/IP的分层
- 1.4 互联网的地址
- 1.5 域名系统
- 1.6 封装
- 1.7 分用
- 1.8 客户-服务器模型
- 1.9 端口号
- 1.10 标准化过程
- 1.11 RFC
- 1.12 标准的简单服务
- 1.13 互联网
- 1.14 实现
- 1.15 应用编程接口
- 1.16 测试网络
- 1.17 小结
- 第2章 链路层
- 2.1 引言
- 2.2 以太网和IEEE 802封装
- 2.3 尾部封装
- 2.4 SLIP:串行线路IP
- 2.5 压缩的SLIP
- 2.6 PPP:点对点协议
- 2.7 环回接口
- 2.8 最大传输单元MTU
- 2.9 路径MTU
- 2.10 串行线路吞吐量计算
- 2.11 小结
- 第3章 IP:网际协议
- 3.1 引言
- 3.2 IP首部
- 3.3 IP路由选择
- 3.4 子网寻址
- 3.5 子网掩码
- 3.6 特殊情况的IP地址
- 3.7 一个子网的例子
- 3.8 ifconfig命令
- 3.9 netstat命令
- 3.10 IP的未来
- 3.11 小结
- 第4章 ARP:地址解析协议
- 4.1 引言
- 4.2 一个例子
- 4.3 ARP高速缓存
- 4.4 ARP的分组格式
- 4.5 ARP举例
- 4.5.1 一般的例子
- 4.5.2 对不存在主机的ARP请求
- 4.5.3 ARP高速缓存超时设置
- 4.6 ARP代理
- 4.7 免费ARP
- 4.8 arp命令
- 4.9 小结
- 第5章 RARP:逆地址解析协议
- 5.1 引言
- 5.2 RARP的分组格式
- 5.3 RARP举例
- 5.4 RARP服务器的设计
- 5.4.1 作为用户进程的RARP服务器
- 5.4.2 每个网络有多个RARP服务器
- 5.5 小结
- 第6章 ICMP:Internet控制报文协议
- 6.1 引言
- 6.2 ICMP报文的类型
- 6.3 ICMP地址掩码请求与应答
- 6.4 ICMP时间戳请求与应答
- 6.4.1 举例
- 6.4.2 另一种方法
- 6.5 ICMP端口不可达差错
- 6.6 ICMP报文的4.4BSD处理
- 6.7 小结
- 第7章 Ping程序
- 7.1 引言
- 7.2 Ping程序
- 7.2.1 LAN输出
- 7.2.2 WAN输出
- 7.2.3 线路SLIP链接
- 7.2.4 拨号SLIP链路
- 7.3 IP记录路由选项
- 7.3.1 通常的例子
- 7.3.2 异常的输出
- 7.4 IP时间戳选项
- 7.5 小结
- 第8章 Traceroute程序
- 8.1 引言
- 8.2 Traceroute程序的操作
- 8.3 局域网输出
- 8.4 广域网输出
- 8.5 IP源站选路选项
- 8.5.1 宽松的源站选路的traceroute程序示例
- 8.5.2 严格的源站选路的traceroute程序示例
- 8.5.3 宽松的源站选路traceroute程序的往返路由
- 8.6 小结
- 第9章 IP选路
- 9.1 引言
- 9.2 选路的原理
- 9.2.1 简单路由表
- 9.2.2 初始化路由表
- 9.2.3 较复杂的路由表
- 9.2.4 没有到达目的地的路由
- 9.3 ICMP主机与网络不可达差错
- 9.4 转发或不转发
- 9.5 ICMP重定向差错
- 9.5.1 一个例子
- 9.5.2 更多的细节
- 9.6 ICMP路由器发现报文
- 9.6.1 路由器操作
- 9.6.2 主机操作
- 9.6.3 实现
- 9.7 小结