1、 1.命令和代码echo12.命令意义*iacwillecho命令发送...
2、通常的连接是双向的,在一个方向上的数据流与另一个方面上的数据流没有什么关...
3、光是echo选项还不足以让远程计算机理解是在终端上输入的字符,因此要使用...
正文内容:
通常的连接是双向的,在一个方向上的数据流与另一个方面上的数据流没有什么关系。下面是五种可能出现的情况:
此选项提供了决定一端是否对另一端数据进行返回。如果不对另一端进行返回,那对自己进行不进行返回。
如果两端的主机都进行了echo状态,那会在连接上出现无限循环的状态,因此实现者在实现时要注意这种情况,一端返回的数据,另一端不要再返回了。
双方在建立连接的时候的默认状态时非echo状态。
如果一方决定要返回对方发出的数据,或希望对方这样做,由它发出相应的命令,并等待响应。如果响应被拒绝,则仍然保持非echo状态;如果对方接受了请求,则连接进入echo状态,处于这样的状态下时,任何一方都可以解除echo状态,因为连接是双向的,因此不同方面的echo状态应该分别解除。
在实现时要遵守telnet协议中的循环防止规则。因为在不同状态下的开关有时候会意义不清,因此要特别注意相应开关所在的状态。例如一方以willecho响应了doecho,则在doecho之后的所有字符均被返回,这一条无论是接收方还是发送方都应该牢记。
通常的连接是双向的,在一个方向上的数据流与另一个方面上的数据流没有什么关系。下面是五种可能出现的情况:
此选项提供了决定一端是否对另一端数据进行返回。如果不对另一端进行返回,那对自己进行不进行返回。
如果两端的主机都进行了echo状态,那会在连接上出现无限循环的状态,因此实现者在实现时要注意这种情况,一端返回的数据,另一端不要再返回了。
双方在建立连接的时候的默认状态时非echo状态。
如果一方决定要返回对方发出的数据,或希望对方这样做,由它发出相应的命令,并等待响应。如果响应被拒绝,则仍然保持非echo状态;如果对方接受了请求,则连接进入echo状态,处于这样的状态下时,任何一方都可以解除echo状态,因为连接是双向的,因此不同方面的echo状态应该分别解除。
在实现时要遵守telnet协议中的循环防止规则。因为在不同状态下的开关有时候会意义不清,因此要特别注意相应开关所在的状态。例如一方以willecho响应了doecho,则在doecho之后的所有字符均被返回,这一条无论是接收方还是发送方都应该牢记。
光是echo选项还不足以让远程计算机理解是在终端上输入的字符,因此要使用suppress-goahead选项进行相应的处理。
6.例子
下面是一个称为uhost的简单实现。其中用于非echo的值小于用于表示echo的值。对于每个用户终端,uhost保留三个状态位,是否对自己进行echo,用户是否希望在echo状态下工作,终端连接到服务器上时是否处于echo状态下,这三位我们称为p(物理),d(希望)和a(实际)位。
当终端拨号时,设置p位和d位,而a位设置为非echo,p位和d位可以通过相应的命令进行人为设置。
当uhost和服务器的连接打开时,如果p位和d位的最小值小于a位,那就向服务器发出doecho命令,如果收到wontecho或willecho响应,uhost会设置a位为接收到以下三值的最小值:接收到的值,p位值,d位值。如果需要改变a位当前的状态,uhost要发出相应的确定信息,如果不改变a位当前的状态,则返回拒绝,表示自己不需要进行改变。
如果在连接打开时,uhost终端改变了p位或d位的值,uhost会重复上面的测试。连接关闭时,uhost会恢复a位值。因为uhost在连接打开时或用户显式改变echo状态时未涉及使用doecho和dontecho命令,大型主机会频繁地进行这样的状态切换。例如,当line-at-a-time系统运行时,服务器会试图通过wontecho命令将用户设置为本地echo状态;但是当character-at-a-time系统运行时,服务器需要通过willecho命令启动用户的远程echo。而且,因为uhost不会发出willecho命令,只会发出wontecho命令,服务器主机会频繁发出will和wont命令。