用户级软件
在用户级, 提供了用于管理数据缓冲和格式化面向其他主机的输入的子例程。用户并非必须使用这类子例程, 因为用户可以在自己的监控程序中访问网络系统调用。
除了用户编程访问之外, 还希望每台主机上都有一个子系统程序, 使人们无需特殊编程就能从类电传打字机设备立即访问网络。子系统是常用的系统组件, 例如文本编辑器、编译器和解释器。一个与网络相关的子系统例子是 TELNET, 它允许犹他大学的用户连接到斯坦福研究所, 并像普通终端用户一样出现。预计随着时间的推移会开发出更精密的子系统, 但这个基本的子系统将使早期的网络立即变得有用。
犹他大学 (UTAH) 的一位用户坐在一台电传打字机前, 该终端拨号接入该大学的分时系统 PDP-10/50。他想在位于加利福尼亚州门洛帕克的斯坦福研究所 (SRI) 的 XDS-940 上运行会话式代数语言 (Conversational Algebraic Language, CAL) 子系统。图 5 展示了一段典型的 TELNET 对话。这里讨论对话每一行的含义。
- (i) 用户在 UTAH 登录
- (ii) PDP-10 的 run 命令在用户的主机上启动 TELNET 子系统。
- (111) 用户指定一个中断字符, 该字符使中断之后的任何消息在本地解释, 而不是发送到外部主机上。
- (iv) TELNET 子系统将进行适当的系统调用, 以建立一对到 SRI 登录服务进程的连接。只有 SRI 接受另一个外部用户时, 这些连接才会建立。
UTAH 的用户现在处于 SRI 的登录前状态。这类似于标准电传打字机用户在拨入一台计算机并建立连接之后、但尚未键入任何内容时的状态。
- (v) 用户用标准的登录命令登录到 SRI。用户在电传打字机上键入的字符原样穿过 PDP-10 (用户主机) 并传送到 940 (服务主机)。PDP-10 上的 TELNET 将自动切换为全双工、逐字符传输, 因为 SRI 的 940 要求如此。PDP-10 允许全双工运行, 尽管大多数数字设备公司 (Digital Equipment Corporation) 子系统并不使用它。
- (vi) 和 (vii) 940 的子系统 CAL 被启动。
此时, 用户希望从他本地 PDP-10 上的文件系统把一个本地 CAL 文件装入 940 的 CAL 子系统。
- (viii) 命令 CAL 建立一条到 UTAH 的连接, 以便接收这个文件。"NETWRK" 是一个预定义的 940 名称, 其性质类似于 "PAPER TYPE" 或 "TELETYPE"。
- (ix) 最后, 用户键入中断字符 (#), 后跟一条发给他的 PDP-10 TELNET 程序的命令, 该程序经由为此目的刚建立的连接, 把所需的文件从犹他发送到 SRI。用户的下一条语句又回到 CAL 中。
TELNET 子系统的编码应当尽量少, 因为它本质上是一个建立在网络系统调用之上的外壳程序。它在用户主机中有效地建立了一条位于远程用户与远端服务主机之间的分流通道。
有了基本的系统原语、用户主机上的 TELNET 子系统以及服务主机的手册, 远程用户今天就可以有益地使用网络了。