telnet怎么使用,oracle12537连接关闭( 二 )


远程登陆是指用户使用Telnet命令, 使自己的计算机暂时成为远程主机的一个仿真终端的过程 。 仿真终端等效于一个非智能的机器, 它只负责把用户输入的每个字符传递给主机, 再将主机输出的每个信息回显在屏幕上 。

2 远程登陆的产生及发展

我们可以先构想一个提供远程文字编辑的服务, 这个服务的实现需要一个接受编辑文件请求和数据的服务器以及一个发送此请求的客户机 。 客户机将建立一个从本地机到服务器的TCP连接, 当然这需要服务器的应答, 然后向服务器发送键入的信息(文件编辑信息), 并读取从服务器返回的输出 。 以上便是一个标准而普通的客户机/服务器模型的服务 。
似乎有了客户机/服务器模型的服务, 一切远程问题都可以解决了 。 然而实际并非你想象的那样简单, 如果我们仅需要远程编辑文件, 那么刚才所构想的服务完全可以胜任, 但假如我们的要求并不是这么简单, 我们还想实现远程用户管理, 远程数据录入, 远程系统维护, 想实现一切可以在远程主机上实现的操作, 那么我们将需要大量专用的服务器程序并为每一个可计算服务都使用一个服务器进程, 随之而来的问题是:远程机器会很快对服务器进程应接不暇, 并淹没在进程的海洋里(我们在这里排除最专业化的远程机器) 。
那么有没有办法解决呢?当然有, 我们可以用远程登录来解决这一切 。 我们允许用户在远地机器上建立一个登录会话, 然后通过执行命令来实现更一般的服务, 就像在本地操作一样 。 这样, 我们便可以访问远地系统上所有可用的命令, 并且系统设计员不需提供多个专用地服务器程序 。
问题发展到这里好像前途一片光明了, 用远程登录总应该解决问题了吧, 但要实现远程登陆并不简单 。 不考虑网络设计的计算机系统期望用户只从直接相连的键盘和显示器上登录, 在这种机器上增加远程登陆功能需要修改机器的操作系统, 这是极其艰巨也是我们尽量避免的 。 因此我们应该集中力量构造远程登陆服务器软件, 虽然这样也是比较困难的 。 为什么说这样做也比较困难呢?
举个例子来说:一般, 操作系统会为一些特殊按键分配特殊的含义, 比如本地系统将\'Ctrl+C\'解释为:\'终止当前运行的命令进程\' 。 但假设我们已经运行了远程登陆服务器软件, \'Ctrl+C\'也有可能无法被传送到远地机器, 如果客户机真的将\'Ctrl+C\'传到了远地机器, 那么\'Ctrl+C\'这个命令有可能不能终止本地的进程, 也就是说在这里很可能会产生混乱 。 而且这仅仅是遇到的难题之一 。
但尽管有技术上的困难, 系统编程人员还是设法构造了能够应用于大多数操作系统的远程登陆服务器软件, 并构造了充当客户机的应用软件 。 通常, 客户机软件取消了除一个键以外的所有键的本地解释, 并将这些本地解释相应的转换成远地解释, 这就使得客户机软件与远地机器的交互, 就如同坐在远程主机面前一样, 从而避免了上述所提到的混乱 。 而那个唯一例外的键, 可以使用户回到本地环境 。
将远程登陆服务器设计为应用级软件, 还有另一个要求, 那就是需要操作系统提供对伪终端(pseudo terminal)的支持 。 我们用伪终端描述操作系统的入口点, 它允许像Telnet服务器一样的程序向操作系统传送字符, 并且使得字符像是来自本地键盘一样 。 只有使用这样的操作系统, 才能将远程登陆服务器设计为应用级软件(比如Telnet服务器软件), 否则, 本地操作系统和远地系统传送将不能识别从对方传送过来的信息(因为它们仅能识别从本地键盘所键入的信息), 远程登陆将宣告失败 。

推荐阅读