跳到主要内容

附录 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 ]