跳到主要内容

I. IMP 软件概述

消息​

信息以称为消息 (messages) 的捆绑包形式从主机传输到主机。消息是不超过 8080 位的任意数据流, 连同其头部。头部为 16 位, 包含以下信息:

目的地 (Destination)     5 位
链路 (Link) 8 位
跟踪 (Trace) 1 位
备用 (Spare) 2 位

目的地是消息应发送到的主机的数字代码。跟踪位向 IMP 发出信号, 记录有关消息的状态信息并将该信息发送回 NMC (Network Measurement Center, 网络测量中心, 即 UCLA)。备用位未使用。

链路​

链路字段是 IMP 用于限制某些类型拥塞的特殊设备。其功能如下。在每对主机之间有 32 条逻辑全双工连接 (logical full-duplex connections), 消息可以在任一方向传递。IMP 对这些链路施加限制: 在目的地 IMP 发回称为 RFNM (Request for Next Message, 下一消息请求) 的特殊消息之前, 任何主机都不能在同一链路上连续发送两条消息。这种安排限制了当发送主机试图在一条链路上发送过多内容时, 一台主机可能对另一台主机造成的拥塞。然而, 我们注意到, 由于目的地 IMP 没有足够的容量同时处理所有 32 条链路, 因此只有当过载来自一两条链路时, 链路才能发挥其作用。主机在这方面有必要进行合作。

链路具有以下基本特性: 它们始终在运行, 并且始终有 32 条。

"始终在运行"意味着 IMP 始终准备好在其上传输另一条消息。IMP 软件中不包含开始或结束会话的概念。因此, 不可能向 IMP 查询链路的状态 (尽管可能可以查询 IMP 关于链路的近期历史 -- 这是完全不同的事情!)。

链路的另一个基本特性是, 无论是否在使用中, 始终有 32 条。这意味着每个 IMP 必须维护 18 张表, 每张表有 32 个条目, 无论实际流量如何。

尽管对链路结构存在异议, 但链路在 IMP 内很容易编程, 仅仅因为其简单性, 可能是比更复杂安排更好的替代方案。

IMP 传输与错误检查​

从主机接收消息后, IMP 将消息分割成一个或多个数据包 (packets)。数据包长度不超过 1010 位, 是 IMP 到 IMP 数据传输的单位。24 位循环校验和 (cyclic checksum) 由传输硬件计算并附加到发出的数据包。校验和由接收硬件重新计算, 并与传输的校验和进行核对。数据包在目的地 IMP 重新组装成消息。

IMP 软件的未解决问题​

  1. 为链路规范提供了 8 位字段, 但只提供了 32 条链路, 为什么?

  2. 主机应该能够向其 IMP 发送消息。它是如何做到的?

  3. 主机 (而非其 IMP) 能控制 RFNM 吗?

  4. IMP 会执行代码转换吗? 如何控制?