Windows telnet client的一个BUG

Windows telnet client 的一个 BUG

    使用Windows过程中遇到的一个问题,记录一下:某些情况下telnet client打开/关闭Local echo(本地回显)不生效。

    首先解释一下telnet的显示:

    Telnet连接下,用户键入一个字符后telnet client一般会显示用户输入的字符,这个叫做local echo。同时telnet协议里规定了telnet 连接双方可以把收到的字符返回给对方,在telnet建立过程中telnet连接双方可以协商是否把收到的字符回显给对方,即协商echo选项,具体参见RFC 857-TELNET ECHO OPTION。

两种情况下,local echo和echo optin的组合会带来使用上的不便:

1. local echo关闭,对端不回显接收到的字符。这样会导致telnet程序上看不到任何用户输入。

2. local echo打开,对端回显接收到的字符。这样会导致telnet程序上看到两份输入的字符。

    一般情况下,telnet程序会根据echo选项协商的结果来打开/关闭本地回显,从而避免上面的两种不合理情况。但是某些特殊情况下,telnet双方可能不协商或者无法完成协商echo选项,那么本端telnet程序在不知道对方是否会把字符回显回来的情况下,就得决定是否打开local echo,当然,选择只有两个:

A. 打开local echo

B. 关闭local echo

    当然,这两种选择都有可能带来前面的1、2两种问题。相对于问题1下的什么都看不到,问题2的两份输入相对来说还容易接受一些。Windows命令行启动的telnet遇到上面情况时选择的是A,超级终端下telnet选择的是B。

    同时,命令行telnet和超级终端telnet都给用户提供了打开/关闭local echo的方法来避免问题1、2。

    命令行telnet下打开/关闭local echo的方法是:telnet连接建立后,按ctrl+]键,会出现关于telnet选项的设置,使用set localecho/unset localecho命令来打开/关闭本地回显(Windows 2000下是set LOCAL_ECHO/unset LOCAL_ECHO):

Microsoft Telnet> set localecho

打开本地回显

Microsoft Telnet> unset localecho

关闭本地回显

Microsoft Telnet>

    设置完成后按enter键退出telnet设置返回telnet界面。

    超级终端下的设置方法是:使用超级终端建立telnet连接后,打开超级终端“文件”,“属性”,然后在“设置”选项卡里选择“ASCII码设置”,可以看见“本地回显键入的字符”选择,可以进行勾选、去勾选来设置。

   

    在使用过程中发现,命令行下telnet设置local echo打开/关闭有时会出现问题:如果telnet连接的目的端口号不是23,那么local echo设置不起作用。这个问题在所有非Window 2000系统下存在,目前未发现解决办法。

    可以通过一个实验来验证这个问题:

    使用telnet连接163的smtp邮箱服务器,然后打开/关闭local echo,查看是否生效。具体过程如下:

1. telnet smtp.163.com 25,然后输入ehlo smtp.163.com进行握手。

220 hz-b-smtp1.163.com SMTP Server for Netease [466]

ehlo smtp.163.com

250-hz-b-smtp1.163.com

250-mail

250-PIPELINING

250-8BITMIME

250-AUTH LOGIN PLAIN

250-AUTH=LOGIN PLAIN

250 STARTTLS

    在上面的交互中,我们可以看到输入的”ehlo smtp.163.com”字符串,说明local echo是打开的,因为smtp协议不会回显字符。

    然后使用unset localecho命令关闭local echo,再输入”ehlo smtp.163.com”看是否会回显。

Microsoft Telnet> unset localecho

关闭本地回显

220 hz-b-smtp2.163.com SMTP Server for Netease [466]

ehlo smtp.163.com

250-hz-b-smtp2.163.com

250-mail

250-PIPELINING

250-8BITMIME

250-AUTH LOGIN PLAIN

250-AUTH=LOGIN PLAIN

250 STARTTLS

ehlo smtp.163.com

250-hz-b-smtp2.163.com

250-mail

250-PIPELINING

250-8BITMIME

250-AUTH LOGIN PLAIN

250-AUTH=LOGIN PLAIN

250 STARTTLS

    可以看到,上面第二次输入的”ehlo smtp.163.com”还是被显示出来了。

    在Windows 2000系统下未发现问题。

你可能感兴趣的:(windows,server,Microsoft,服务器,login,终端)