数据传送

虽然Telnet连接是全双工的,NVT却是在线缓冲状态下的半双工设备。传送数据 虽然Telnet连接是全双工的,在线缓冲模式下,NVT却被当作半双工的设备。此信号可以由进程或者用户产生。对于一些主机处理网络输入中断,或与默认的不进行远程回显的NVT说明的主机来说,此规则的代价是高昂的。因此,在源点缓存一些数据是有理由的。一些系统在每个输入行未采用一些操作即使是行打印机或打卡机也经常采用这种方法),这样可以在每行未开始发送。在另一方面,用户或者进程可以有时发觉提供在行未不中断的数据是有用的而且是必须的;因此,也应该在实现在本地能够识别这种信号并把这些数据立刻发送的方法和机制。当一个进程已经完成将数据发送到对方的显示设备而且也没有缓存的输入数据时时,进程必须发送Telnet Go Ahead (GA)命令。

这个规则并不是要求 Telnet GA命令必须由双方终端发送,因为服务器主机通常不要求特定的信号来继续进程。但是,此命令的设计可以帮助用户的本地主机操作一个物理上半双工的终端,它如果IBM2741一样拥有可锁定的键盘。对此种类型终端的描述有助于解释GA命令的正确使用。终端和计算机的连接总是在计算机或用户的控制之下。任何一方都不能够隐式地从另一方获得控制权;控制权必须显式地从一方转移到另一方。

在终端一方,设置硬件在每一行结束时放弃控制权例如,当用户按下回车键时)。当这种情况发生时,本地计算机处理输入数据,决定是否输出,如果不需要,将控制权回送给终端。如果需要产生输出,计算机将保有控制权直到输出数据发送完毕。在网络上使用这种终端的困难是显而易见的。“本地”计算机不知道在读到行未符号时是否应该继续保持控制权;这个问题的决定权在远地处理此数据的计算机。因此,Telnet GA命令提供了一种机制让远程计算机能够通知本地计算机,让它将控制权转交给用户终端。在用户需要控制权时,此信号应该也只能在此时发送。注意:过早地发送GA命令会使输出数据阻塞,因为用户可以假定传送系统暂停,因此不能将一行结束。当然,前述内容不能够用于用户到服务器方面的通信方面。在这个方面,GA命令可以在任何时候发送,可以根本不用发送。同样,如果Telnet连接被用于进程到进程的通信,也不需要发送GA命令。

最后,对于终端到终端的通信,可以在两端都需要GA命令,也可以在一端,也可以两端都需要。如果主机希望支持终端到终端的通信主机应该提供一种让用户自由发送GA命令的方法;然而,对于一个Telnet进程而言,这并不是必须的。注意:Telnet模式的对称性要求在概念上,两端中的一端至少是一个NVT。控制函数的标准表示 如要本文的介绍中所说的,Telnet协议的目的是提供一种网络上面向终端进程和终端设备的标准接口。

这种类型互连的先前的经验告诉我们,在许多主机上已经实现了类似的功能,但它们的实现方法却差别很大。对于接触这些系统的用户而言,这些差别将是令人头痛的。因此,Telnet定义了以下功能的五种标准表示。这种标准表示有一定的标准的意义,但这也不是必须的例外是中断处理函功能要其它使用Telnet的协议执行);这也就是说,系统不提供给本地用户的功能也不可以不提供给远程用户,它可以将标准表示作为非操作的功能。在另一方面,给本地用户提供此功能的系统必须也向传送此功能标准表示的远程用户提供此功能。


相关内容