附录 A - 至 SRI 网络信息中心的网络连接协议
1. 初始连接协议
与 NIC 建立连接的方式与 NWG/RFC 80 NIC (5608,) 第 II 节所述完全相同, 现转载于此:
Telnet contacts NIC
NIC <- user site
RTS <us> <l> <p>
NIC logger is socket 1
user site <- NIC
STR <l> <us> CLS <l> <us>
if accepted
CLS <l> <us>
if rejected
assuming NIC accepts
user site <- NIC
STR <ss+l> <us>
RTS <ss> <us+l> <q>
NIC receives text thru local socket ss from remote
socket us+l via link q
assuming user site accepts
NIC <- user site
STR <us> <ss+l>
RTS <us+l> <ss> <r>
NIC sends text to remote socket us thru local socket
ss+l via link r
.
.
.
user site <- NIC
ALL <q> <space>
.
.
.
NIC <- user site
ALL <r> <space>
2. 断开连接协议
按照文档 #1 NIC (5143,) 的规定, 两个连接中的每一个都在 NCP 之间进行一次 CLS 交换。
我们或许会决定在 NIC 连接中加入超时 (time-out), 使得在某段 (尚未明确的)"合理"时间内没有任何交互时, 由 NIC 发起连接的 CLS 拆除。
3. 第三层协议
NIC 通过套接字 (socket) ss 接收的前 8 个比特应当是报文数据类型, 用以指明其后跟随 8 比特 ASCII 流, 遵循 NWG/RFC #63, NIC (4963,)。
I.e., the first 8 bits are 00000001
Telnet 通过套接字 us 接收的前 8 个比特同样会指明报文数据类型为 1。每个网络报文应具有 8 比特的整数倍的长度。如果最终建立的网络标准与 NWG/RFC #63, NIC (4963,) 的建议不同, 我们会相应修改本协议以保持一致。
NIC 将禁用 NCP 产生的中断, 即:
INR will be ignored
INS will not be sent to the remote host
4. 与 Telnet 相关的 NLS(NIC) 字符约定
回显既可以由 NLS(NIC) 控制, 也可以由用户站点控制。下文提到回显时, 均指由 NLS(NIC) 控制。当回显由用户站点处理时, 我们期望用户把 NLS(NIC) 的输出约定设置为与其站点的回显约定一致。除非被明确指示改变, NLS(NIC) 假定回显由用户站点处理。
影响格式的控制字符:
- 水平制表符 (horizontal tab)
- 回显和输出时, 跳到下一个 (用户可定义的) 制表位。
- 若在字面输入 (literal input) 期间, 以 ASCII '11 存入文件。
- 换页符 (form feed)
- 回显和输出时, 回车并附加 (用户可定义的) 适当数目的换行。
- 若在字面输入期间, 以 ASCII '14 存入文件。
- 垂直制表符 (vertical tab)
- 回显和输出时, 回车并附加 (用户可定义的) 适当数目的换行。
- 若在字面输入期间, 以 ASCII '13 存入文件。
- 回车符 (carriage return)
- 回显和输出时, 回车后跟换行。
- 若在字面输入期间, 以 EOL 存入文件 (见下文)。
- 换行符 (line feed)
- 回显和输出时, 换行。
- 字面输入时以 ASCII '12 存入文件。
- EOL (行结束, end of line)
- 目前为 ASCII 代码 '37。
- 回显和输出时, 回车后跟换行。
- 若在字面输入期间, 以 ASCII '37 存入文件。
- 如果用户的系统在把 CR 发送给 Telnet 之前自动附加一个 LF, 或者把 CR 转换为某种非 ASCII '37 的 EOL 代码, 我们期望 Telnet 向 NLS(NIC) 只发送一个 CR 或 ASCII '37。如果我们接收到 CRLF, 那么输出时我们将发送 CRLFLF。
5. NLS(NIC) 中断注意约定
文本输入流中的一个 (用户可定义的) ASCII 代码用于中止正在执行的进程, 并把控制权交回 NLS(NIC) 主命令处理器。
该代码目前为 DEL (ASCII '177)。
- 转义到 NIC 监视器: 无需转义, 因为使用 NIC 所需的全部操作都可以在 NLS(NIC) 内完成。
- 字符集: 我们强烈建议 Telnet 进程能够通过某套按键约定产生全部 128 个 ASCII 代码。在具有大小写图形字符的设备上使用 NLS(NIC) 可能感觉最舒适, 不过我们也可以为单一大小 (single case) 的设备提供服务。即使无法发送完整的 ASCII 字符集, 我们也能提供有用的服务, 但希望尽量减少必须处理的特殊情形。无法提供完整 ASCII 字符集的站点请与我们联系。
图 1 - Telnet 连接:
+----+ |
| | Server |
| | Program |
| | |
+----+ |
^ | |
| v |
+----+ Terminal |
| | control |
| | software | SERVER
| | and | SITE
+----+ possibly |
^ | hardware |
| v |
+----+ |
| | |
| | NCP |
| | |
+----+ |
^ | |
| v |
. .
. .
. .
. .
^ |
| v
+----+ |
| | |
| | NCP |
| | |
+----+ |
^ | |
| v |
+----+ |
| | |
| | Telnet |
| | |
+----+ |
^ | | USER
| v | SITE
+----+ Terminal |
| | control |
| | hardware- |
| | software |
+----+ |
^ | |
| v |
+----+ |
| | User |
\ | terminal |
\--+ |
[ This RFC was put into machine readable form for entry ] [ into the online RFC archives by Tony Hansen 08/08 ]