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

📄 297.htm

📁 unix高级编程原吗
💻 HTM
字号:
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=gb2312">
<title>CTerm非常精华下载</title>
</head>
<body bgcolor="#FFFFFF">
<table border="0" width="100%" cellspacing="0" cellpadding="0" height="577">
<tr><td width="32%" rowspan="3" height="123"><img src="DDl_back.jpg" width="300" height="129" alt="DDl_back.jpg"></td><td width="30%" background="DDl_back2.jpg" height="35"><p align="center"><a href="http://apue.dhs.org"><font face="黑体"><big><big>apue</big></big></font></a></td></tr>
<tr>
<td width="68%" background="DDl_back2.jpg" height="44"><big><big><font face="黑体"><p align="center">               ● UNIX网络编程                       (BM: clown)                </font></big></big></td></tr>
<tr>
<td width="68%" height="44" bgcolor="#000000"><font face="黑体"><big><big><p   align="center"></big></big><a href="http://cterm.163.net"><img src="banner.gif" width="400" height="60" alt="banner.gif"border="0"></a></font></td>
</tr>
<tr><td width="100%" colspan="2" height="100" align="center" valign="top"><br><p align="center">[<a href="index.htm">回到开始</a>][<a href="288.htm">上一层</a>][<a href="298.htm">下一篇</a>]
<hr><p align="left"><small>发信人: tianxing (天行健,君子自强不息), 信区: Winsock <br>

标  题: Telnet Protocol(中译版二) <br>

发信站: 武汉白云黄鹤站 (Thu Jun 29 19:13:41 2000), 站内信件 <br>

  <br>

  <br>

  <br>

Postel                                                          [Page 9] <br>

RFC 318                     Telnet Protocol                   April 1972 <br>

这里就产生了另外的一个新的问题,"当CR和LF意味着表示一新行时,是否允许在一个C <br>

R和一个 LF之间发送Telnet信号NOP(编码为130)呢?"答案是"是,NOP信号可以出现在数 <br>

据流的任何地方。" <br>

回显 <br>

有一个决议是假定用户方会为它自己的终端提供任何必要的回显,因为有些装置不能关 <br>

掉他们的回显或者是存在那些把他们的键入在本地打印作为其结果的终端,于是这样的 <br>

决议被采纳。服务方可以得到"关掉用户回显"的状态,但这对用户而言似乎是一个不必 <br>

要的负担。此外,有些服务站点可能会选择不提供任何回显服务,在这种情况下,没有 <br>

回显的假定将支持一个网络范围的状况,而其他假定会给出一个混合的开始状况。 <br>

   对"ECHO",  "NO ECHO" 信号的协定似乎同时满足了动态回显控制和Telnet协议最小 <br>

实现的需要。注意到当用户请求ECHO 或 NO ECHO时服务方是通过转换到期望的方式(可 <br>

能返回表示一种新方式的信号)来作为应答,或者是继续当前的方式并返回表示当前方 <br>

式的信号作为应答。除了NO ECHO可能会被用来取消HIDE YOUR INPUT信号,服务方从不 <br>

主动地发送ECHO或 NO ECHO信号 <br>

隐藏你的输入 <br>

隐藏你的输入 <br>

   HIDE YOUR INPUT信号所表现出来的困难在于它不清楚要隐藏的程度。服务方站点通 <br>

常知道密码的长度,但是通常用户Telnet 不知道。此外,如果用户方不能消除本地回显 <br>

,那么就产生了一个实现困难的问题。一种可能就是用户方采用掩码重新打印一整行。 <br>

如果密码长度超过一行,那么应该重复使用掩码。 <br>

  可以通过让服务方发送一个掩码(它被认为足够长)而完全避免对HIDE YOUR INPUT信 <br>

号的使用,这样用户可以在其上键入密码信息。 <br>

Postel                                                         [Page 10] <br>

RFC 318                     Telnet Protocol                   April 1972 <br>

      EXAMPLE: <br>

         1.  缺省情况下假定用户方正使用回显。 <br>

         2.  Server-to User:  Password Please CR LF <br>

         3.  Server-to-User:  XXXXCRIIIIICRMMMMCR NUL <br>

         4.  User-to-Server:  "password" CR LF <br>

         5.  Server-to-User:  Ready CR LF <br>

Breaks and Attentions <br>

   在某些终端上有一种特殊的控制信号,这种信号在ASCII中没有与之相应的位方式, <br>

  <br>

   但它被一种特殊的电信号传输。这种控制信号在2741和电传(打字)机中间隔被留意 <br>

。 <br>

   这种信号表示为Telnet控制信号中的间隔(BREAK). <br>

    有一个类似的从服务站点到用户控制信号被用来用做反间隔(REVERSE BREAK)。 <br>

   注意,相反的是网络虚拟终端是一种双向字符设备,因而不需要回转行。 <br>



   许多系统把Break作为一种额外编码处理,这种额外码用来连接数据流。例如,一个 <br>

系统使用Break作为一个特殊的编辑码,它的意思是"删除当前行到光标处"。在这些情况 <br>

下,这个编码会被简单地插入到数据流中而不需要用户附加的特别的动作。 <br>

   别的系统在特殊中断方式中使用Break或Attn,意味着停止处理应用而让我成为管理 <br>

员,或者取消当前的任务,等等。(别的使用正常字符的系统每次检查输入的字符就是 <br>

为了这个目的,例如<etx>。) <br>

在这种情况下,由于服务方和用户方操作方式上的差异,对除了正常的Telnet数据流外 <br>

的数据采取一定的路径以指出内嵌在数据流中的特殊字符是很有必要的。 <br>

   Example -- Problem: <br>

PDP-10通常情况下,当它装满自己的缓冲区以后,继续接受并检查来自终端的每一个字 <br>

符以看其是否是一个控制字符,如果是则按控制字符行动,否则将其丢弃。 <br>

既然服务站点的Telnet服务器对NCP关于聚束的控制无能为力,因此,到达Telnet的有大 <br>

量字符组。 <br>

Postel                                                         [Page 11] <br>

RFC 318                     Telnet Protocol                   April 1972 <br>

Telnet可能被期望实现为阻塞那些到缓冲区中的流直到它们准备好接收字符并不再丢弃 <br>

字符。 <br>

      在这种情况下,服务处理可能正在输出数据到用户终端,服务器的输入缓冲填满 <br>

了(装满了用户发生的字符)并且正文结束符<etx>被卡(在用户方)在刚被阻塞的数据 <br>

流处。 <br>

在作为数据行的时间服务器,如Multics或某些IBM系统上可能会产生类似的问题。用户 <br>

方的用户使他在服务方的处理进入一个输出循环并期望不必释放他的Telnet连接就能暂 <br>



停这个处理。缓冲区阻塞了连接,传输被卡住,并且<etx>,Break,或其他在传输途径 <br>

中的用户控制信号被阻塞。 <br>

   例: -- 解决方案: <br>

      用户方的用户知道他正在输入一个特殊控制信号(Break, Attn, <etx>, etc.)并 <br>

且在其后紧跟一个SYNCH。(用户方的本地指令实现可能随站点的不同而不同。) <br>

用户使用用户方Telnet <br>

            发送 SYNCH. <br>

         用户方Telnet到服务方: <br>

            DATA MARK in Data Stream. <br>

         用户方Telnet到用户方NCP: <br>

            发送一个INS. <br>

         服务方NCP Telnet到服务器: <br>

            中断 "INS 收到". <br>

服务方Telnet: <br>

            检查输入数据流(寻找特殊控制信号)知道它看见DATA MARK才恢复处理。 <br>

  <br>

因而,依赖于服务器的本地实现来提供足够的服务,为得到特殊字符,无论什么时候收 <br>

到一个INS,需要对数据流进行专门的处理。 <br>

Postel                                                         [Page 12] <br>

RFC 318                     Telnet Protocol                   April 1972 <br>

当它看到DATA MARK,它就把它认可为一个同步点,从而知道特殊字符已经被通过,然后 <br>

去掉数据流中的DATA MARK以返回到正常方式。 <br>



如果DATA MARK在INS之前到达,服务方应该不再处理数据流直到一个INS到达。 <br>

这种对所选特殊字符或信号的处理途径减小了Telnet的处理,这些处理包括: <br>

1>Telnet 不得不认出特殊服务站点的字符集, <br>

2>Telnet必须知道服务方怎么去处理它们。 <br>

同时,这个程序仅要求了一个最小程度的用户对服务方的理解。这样应该是合适的,因 <br>

为Telnet协定上是提供一个网络虚拟终端,而不是一个网络虚拟用户。 <br>

注意到正确的顺序是:(1)特殊字符或信号(例如,BREAK 或 <etx>),(2)SYNCH。 <br>

用户Telnet信号 <br>

   用户能够在用户方以串发送任何ASCII字符集中的组合的能力,并且只有这种组合, <br>

被认为是对用户Telnet应用非常重要的ASCII常规。正因为如此,许多用户方可能觉得很 <br>

有必要为用户、用户方提供专门的本地Telnet信号。 <br>

例: <br>

     一个用户通过网络在服务方站点上工作,这个服务站点是一个时间系统(Multics <br>

,System 360,GCOS,etx.),它处理用户输入前需要先得到一个行结束信号。这个应用正 <br>

在被调试,调试帮助用户输入"location="到它里面,它将以n作为响应,而n在那里代表 <br>

那个位置的当前内容。服务方处理时不希望看到"location="后面跟着一个回车换行序列 <br>

。用户方的用户应该能够在这个位置键入,使其后跟随一个信号()以禁止传统行结束 <br>

协定,并期望"location="立即被传输到服务器,且结束序列不被传输给服务器。 <br>

Postel                                                         [Page 13] <br>

RFC 318                     Telnet Protocol                   April 1972 <br>

例如: <br>

 另外有中情况就是,用户方认为当每次累积四个字符后再一起将他们发送给服务方更方 <br>



便,除了得到行结束信号外,在这种情况下,行结束序列就被先发送而无论累积了多少 <br>

个字符(大概是三个或更少)。在同一个应用调试中,地址的结束和四字符缓冲划分就 <br>

不相一致了。为了保持净格式,并且希望地址被送到服务站点,应该使用户能够立即发 <br>

送输入的字符,而不是直到行信号。 <br>

      对Telnet信号讨论及那些最近的介绍可能已经可以足够清楚地来实现Telnet ASC <br>

II转换了。 <br>

术语 <br>

   ASCII          - USASCII字符集在NIC # 7104中定义。 <br>

                    在Telnet协议中使用8位编码字符。低半部字符集就是ASCII。 <br>

                    echoing        - 对输入字符的显示成为回显。有两中方式的回 <br>

显。如果设备在传送输入字符给计算机以前显示该字符,那么称其为本地回显(local e <br>

cho),如果设备传送输入字符,而不显示该字符,直到计算机传送一个字符到设备作为回 <br>

显,则称其为远程回显(remote echo)。 <br>

character mode - 这种操作方式下,Telnet尽可能快地传输每个字符。一般而言,当所 <br>

有正在使用的终端、正使用的系统以及服务方系统操作于远程回显方式下时,字符方式 <br>

才被使用。用户输入字符的回显是从服务方系统传输过来的。(i。e。,通过网络) <br>

 line mode      - 在这种操作模式下,Telnet传输构成一组的字符,通常而言,当一 <br>

个或多个在使用终端、系统,或服务系统操作于本地回显模式。 <br>

Postel                                                         [Page 14] <br>

RFC 318                     Telnet Protocol                   April 1972 <br>

                    对用户输入数据的回显时数据并不在网络中传输。 <br>

   全双工         - 这种方式表示一个传输过程使用一个四线连接,它允许在两个方 <br>



向上同时传输数据 <br>

   半双工         - 这种方式表示一个传输过程使用一个两线连接, 数据一次只能在 <br>

一个方向上传输 <br>

   注意半双工设备通常用来本地回显,而全双工则可以或者本地或者远程回显。 <br>

IV.  对Telnet协议改变的提议 <br>

      The changes suggested here are not my ideas, thus the presentation may <br>

  <br>

   be faulty.  I welcome RFC or other communication suggesting other <br>

   changes or better arguments for and against these changes. <br>

回显 <br>

   提议删除Telnet中的控制信号ECHO、NOECHO和 HIDE YOUR INPUT。因为如果服务方系 <br>

统不提供回显(echoing)服务,这些命令就是无用的命令。而且服务系统对于提供回显的 <br>

经验显示,这些控制信号主要是由服务器系统命令最有效地提供。 <br>

数据类型 <br>

   提议删除所有提及到来的自Telnet的数据类型。这些字符流既不是ASCII,又不是Te <br>

lnet通信。 <br>

如果真的必要改变数据类型,那么ASCII命令可以在数据流中送出去。 <br>

最小实现 <br>

   提议最小实现需要保证 <br>

1>      用户Telnet允许用户发送; <br>

2>服务器Telnet正确处理所有Telnet控制信号 <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="298.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 + -