⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 296.htm

📁 unix高级编程原吗
💻 HTM
📖 第 1 页 / 共 2 页
字号:
Postel                                                          [Page 5] <br>

RFC 318                     Telnet Protocol                   April 1972 <br>

标准Telnet实现 <br>

   用户方 <br>

   1)  用户能够输入、传输所有ASCII码 <br>

   2)  用户能够产生并传输如下Telnet信号:BREAK, SYNCH, ECHO and NOECHO. <br>

   3)  提供用户Telnet 信号(e.g. Transmit Now). <br>

   4)  实现 CR LF end-of-line 转换。 <br>

   5)  为本地用户终端提供本地回显。 <br>

   6)  正确地处理Telnet信号 BREAK, SYNCH, NOP, ECHO, NOECHO,隐藏来自服务器的 <br>

  <br>

输入. <br>

  服务器方 <br>

   1)  提供ASCII到本地字符集的映射。 <br>



   2)  正确地处理Telnet信号 BREAK, SYNCH, NOP, NOECHO,and ECHO. <br>

   3)  实现 CR LF end-of-line 转换. <br>

   4)  假定用户方提供回显。或许提供一服务器回显模式。 <br>

最小Telnet实现 <br>

  用户方: <br>

   1)  用户能够输入、传输所有ASCII码。 <br>

   2)  忽略并删除所有来自服务方的Telnet信号。 <br>

   3)  为本地用户终端提供本地回显。 <br>

   4)  实现 CR LF end-of-line 转换. <br>

   5)  提供用户Telnet 信号。 <br>

Postel                                                          [Page 6] <br>

RFC 318                     Telnet Protocol                   April 1972 <br>

   服务器方: <br>

   1)  提供ASCII到本地字符集的映射。 <br>

   2)  忽略并删除所有来自用户方的Telnet信号。 <br>

   3)  假定用户方提供回显。 <br>

   4)  实现 CR LF end-of-line 转换. <br>

III. 对于Telnet协议的讨论 <br>

   服务器方和用户方之间需要掌握相互之间的终端信息并进行终端操作转换,而通过 <br>

   使用一种标准的、网络范围的、中级的终端编码表示法可以用来减小这种需要。 <br>

   但只有当用户,客户方和服务方承担一定的责任时这个方法才可能成功。 <br>

   1.  服务方必须规定如何将这种中级编码映射为所期望的终端编码 <br>



   2.  用户必须熟悉那种映射。 <br>

   3.  用户方必须提供某种方式以让用户能够输入所有的终端码,为方便用户,特殊的 <br>

  <br>

Telnet信号也必须为用户指定,如同指定如何在用户终端上表示来自服务方的信号一样 <br>

  <br>

。 <br>

   别的规划也做了适当的考虑但被拒绝不用。例如,有一个提议是用户方负责转换所有 <br>

  <br>

   去或来自服务方所期待的编码就被拒绝了。因为这样需要用户方保持有所有服务方的 <br>

  <br>

编码,并为每种状况提供一种映射方式。随着新的主机不断增添到网络中,这种信息必 <br>

  <br>

须保持不断的维护。 <br>

字符集 <br>

   既然不知道当前或将来的站点会如何指定映射网络范围的标准码(7bit ASCII in a <br>

  <br>

n 8 bit field)和所期望的来自他们自己的终端的编码,于是,允许用户传输128个ASC <br>

  <br>

II码中的每一个加上(for full user power)所选定的信号(或者是一个普通Telnet控 <br>

  <br>

制,或者是一个特殊的终端信号,例如break或者是attention)。 <br>

Postel                                                          [Page 7] <br>



RFC 318                     Telnet Protocol                   April 1972 <br>

    深切感受到了在用户方用户/系统之间的接口的重要性,但同样强烈的感受到了这 <br>

   是一个本地实现问题,这个问题应该反映出用户方安装原则而不受网络范围标准的影 <br>

  <br>

响。 <br>

   这个方面的几个考虑话题如下: <br>

      1.  如何在用户终端上表示用户方不可用的特殊图形。 <br>

      2.  处理那种只提供大写功能的设备所产生的大/小写问题。 <br>

          a.  表示小写输出。 <br>

          b.  提供给用户shift 和 shiftlock信号。 <br>

      3.  在Telnet中集成编辑功能。 <br>

      4.  扩展网络方式所不能提供给本地用户的选项。例如,保持输出或者删除打印 <br>

  <br>

。 <br>

      5.  允许用户指定键盘输入将如何被传输,例如,让来自终端的一个字符导致一 <br>

  <br>

           个指定的串被用户Telnet发送。 <br>

    对解决Telnet协议问题的提议似乎是为了提供一种最小实现机制,为开发出更加丰 <br>

  <br>

富 <br>

的集合或开发出现在和将来将在终端应用程序,进程对进程间通讯,以及其他协定中 <br>

用来传输数据或控制信息而使用的协议提供一个基础, <br>



   ASCII将被用作网络范围码这种理解已经形成有一段时间了。它在Telnet中的使用导 <br>

  <br>

致了有关128个字符中最大字符的限制。有些系统在他们的操作中的提供远多于这个数目 <br>

  <br>

,因此,作为服务方站点,不能基于一对一的映射。 <br>

   每个这样的服务方站点可能能够提供一个适当的有用字符集,包括所有的系统控制信 <br>

  <br>

号,通过映射它的128个码子而并不是让一个网络用户访问别的编码。相反,任何剩下来 <br>

  <br>

的字符可能会在服务方主应用程序中作为一个特殊的控制信号。这样做的结果是可能拒 <br>

  <br>

绝为网络用户提供那个应用程序所提供功能。因此,鼓励服务方为客户提供从ASCII码到 <br>

  <br>

服务方系统码的完整映射。这可能需要服务方指定两个ASCII码序列来映射到服务方系统 <br>

  <br>

字符集中的单个字符。 <br>

Postel                                                          [Page 8] <br>

RFC 318                     Telnet Protocol                   April 1972 <br>

   注意到有写ASCII码对网络虚拟终端打印机不起作用。当被服务器方处理后输出或者 <br>

  <br>

被用户输入,这些码子必须在网络中传输, <br>

行结束习惯 <br>

行结束习惯 <br>

   对于一个终端的物理行的结束的表示随着网络主机的不同其实现也不同。例如, <br>

   有的使用一return(或new line)键,终端硬件不仅返回carriage /printer到行的 <br>

  <br>

开始,而且走纸到下一行。而在别的实现中,用户敲carriage返回,当软件发送给终端 <br>

  <br>

一行走纸时硬件返回carriage。网络范围的表示是回车返回后接着换行。它表示物理上 <br>

  <br>

的格式话正在被尝试,并将被用户方和服务器方解释、适当地转换。 <br>

EXAMPLE:  一 Multics 用户正在通过网络在某一服务站点主机上工作,在会话的过程中 <br>

  <br>

用户无意中数次击打了他的模型377型TTY上的新行(New Line)键。每次Multics系统被 <br>

  <br>

这样的新行中断唤醒,有缓冲字符的行就被传送到Telnet,在Telnet中就会扫描看它是 <br>

  <br>

否为特殊字符。如果不是,在回车返回后一新行就被插入到输入新行的地方,这行就被 <br>

  <br>

移交给NCP传输。相对地,当Multics Telnet发现来自服务方的数据流中回车返回行走纸 <br>

  <br>

序列,这两个字符就被发送到终端的正确的新行编码替换掉。 <br>

    Telnet定义一行的结束由字符对CR LR指定。实际中许多设备只有一个新行(New L <br>

  <br>

ine)功能。许多计算机系统在程序中使用CR LF功能以得到比他们所提供的格式多得多 <br>



  <br>

的语意。此外,许多计算机系统还允许CR LF功能分开使用(例如,这种情况下一行可以 <br>

  <br>

被重复打印)。因为那些Telnet用户程序需要映射网络虚拟终端到那种只有一个NL功能 <br>

  <br>

的设备,这样就产生了如何处理CR LF的问题。一种解决方法就是检查紧跟在CR 后面的 <br>

  <br>

字符。如果这个字符是LF,那么执行NL功能,如果是任何别的什么,那么就退格到行首。 <br>

  <br>

另一个问题是在本地使用计算机系统期间,"。",导致新行功能,在某些程序中,CR 和 <br>

  <br>

LF用作有重要语意的操作。假定用户Telnet发送序列CR LF,这是否意味着"新行"或"CR <br>

  <br>

操作"后紧跟"LF操作"呢?解决这个问题的方法就是要求Telnet程序发送一个CR NOT以使 <br>

  <br>

其成为CR LF对的一部分,并把这部分作为CR NUL对处理。 <br>

这样,接收程序就总能保持一个CR并能检查下一个字符以判断是否需要一个新行功能。 <br>

  <br>

强烈推荐使用这种方法。 <br>

-- <br>

  <br>

-- <br>



※ 来源:.武汉白云黄鹤站 bbs.whnet.edu.cn.[FROM: 211.69.194.79] <br>

</small><hr>
<p align="center">[<a href="index.htm">回到开始</a>][<a href="288.htm">上一层</a>][<a href="297.htm">下一篇</a>]
<p align="center"><a href="http://cterm.163.net">欢迎访问Cterm主页</a></p>
</table>
</body>
</html>

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -