组织:中国互动出版网(http://www.china-pub.com/) RFC文档中文翻译计划(http://www.china-pub.com/compters/emook/aboutemook.htm) E-mail:ouyang@china-pub.com 译者:顾国飞(ggfei ggfei@263.net) 译文发布时间:2001-4-2 版权:本中文翻译文档版权归中国互动出版网所有。可以用于非商业用途自由转载,但必须保留本文档的翻译及版权信息。 Network Working Group J. Postel Request for Comments: 857 J. Reynolds ISI Obsoletes: NIC 15390 May 1983 RFC 857 TELNET ECHO选项 (RFC 857-TELNET ECHO OPTION) 本RFC规范了一个ARPA Internet community上的标准。在ARPA Internet上的所有主机应当采用和实现这个标准。 目录 1. 命令和代码 1 2. 命令意义 2 3. 默认值 2 4. 选项产生的原因 2 5. 选项描述 2 6. 例子 4 1. 命令和代码 ECHO 1 2. 命令意义 * IAC WILL ECHO 命令发送者请求开始或确定将要开始回复接发送者发出的数据字符。 * IAC WON'T ECHO 命令发送者要求停止或拒绝开始回复接收到的数据字符。 * IAC DO ECHO 命令发送者要求接收方开始回复或确定接收方要回复收到的数据字符。 * IAC DON'T ECHO 命令发送者要求此命令的接收者不要开始或停止回复收到的数据字符。 3. 默认值 WON'T ECHO,DON'T ECHO是默认值,也即不进行回复。 4. 选项产生的原因 NVT有一个显示设备的键盘,在通常情况下,键盘的输入会直接显示到显示设备上,在交互比较多的时候,对于要将字符到去进行控制的远程进程这是合适的方法。我们可以设想一下聊天室里的情况加以理解,在这种情况就需要用这个选项,看起来象一个键盘控制两个显示设备。 5. 选项描述 当此选项有效时,端终端需要将接收到的字符返回给发送者。此选项并不要求返回的和接收的完全一样。当未在echo选项状态时,接收者不返回数据给发送者,当然这不是说接收者就要给接收到的数据不加理会。 通常的连接是双向的,在一个方向上的数据流与另一个方面上的数据流没有什么关系。下面是五种可能出现的情况: 此选项提供了决定一端是否对另一端数据进行返回。如果不对另一端进行返回,那对自己进行不进行返回。 如果两端的主机都进行了echo状态,那会在连接上出现无限循环的状态,因此实现者在实现时要注意这种情况,一端返回的数据,另一端不要再返回了。 双方在建立连接的时候的默认状态时非echo状态。 如果一方决定要返回对方发出的数据,或希望对方这样做,由它发出相应的命令,并等待响应。如果响应被拒绝,则仍然保持非echo状态;如果对方接受了请求,则连接进入echo状态,处于这样的状态下时,任何一方都可以解除echo状态,因为连接是双向的,因此不同方面的echo状态应该分别解除。 在实现时要遵守telnet协议中的循环防止规则。因为在不同状态下的开关有时候会意义不清,因此要特别注意相应开关所在的状态。例如一方以WILL ECHO响应了DO ECHO,则在DO ECHO之后的所有字符均被返回,这一条无论是接收方还是发送方都应该牢记。 光是echo选项还不足以让远程计算机理解是在终端上输入的字符,因此要使用SUPPRESS-GO AHEAD选项进行相应的处理。 6. 例子 下面是一个称为UHOST的简单实现。其中用于非echo的值小于用于表示echo的值。对于每个用户终端,UHOST保留三个状态位,是否对自己进行echo,用户是否希望在echo状态下工作,终端连接到服务器上时是否处于echo状态下,这三位我们称为P(物理),D(希望)和A(实际)位。 当终端拨号时,设置P位和D位,而A位设置为非echo,P位和D位可以通过相应的命令进行人为设置。 当UHOST和服务器的连接打开时,如果P位和D位的最小值小于A位,那就向服务器发出DO ECHO命令,如果收到WON'T ECHO或WILL ECHO响应,UHOST会设置A位为接收到以下三值的最小值:接收到的值,P位值,D位值。如果需要改变A位当前的状态,UHOST要发出相应的确定信息,如果不改变A位当前的状态,则返回拒绝,表示自己不需要进行改变。 如果在连接打开时,UHOST终端改变了P位或D位的值,UHOST会重复上面的测试。连接关闭时,UHOST会恢复A位值。因为UHOST在连接打开时或用户显式改变ECHO状态时未涉及使用DO ECHO和DON'T ECHO命令,大型主机会频繁地进行这样的状态切换。例如,当line-at-a-time系统运行时,服务器会试图通过WON'T ECHO命令将用户设置为本地ECHO状态;但是当character-at-a-time系统运行时,服务器需要通过WILL ECHO命令启动用户的远程ECHO。而且,因为UHOST不会发出WILL ECHO命令,只会发出WON'T ECHO命令,服务器主机会频繁发出WILL和WON'T命令。 RFC857-TELNET ECHO OPTION RFC857 TELNET ECHO选项 1 1 RFC文档中文翻译计划