2017-08-03 78 views
1

我有一个Arduino和以太网盾编码来创建一个简单的串口到远程登录客户端。这适用于将串行终端程序连接到Telnet BBS类型系统,例如bbs.thebytexchange.com使用端口23的系统。连接到Linux使用Telnet提示

当我使用同一个客户端与我的Arch盒通信时,它连接正常,但是,我立即从Arch框接收5个字节,然后停止。无论我发送给Arch盒什么都不会返回。 五个字节(十六进制),如下所示。 18 20 23 27 24.如果我连接运行Raspian的Raspberry Pi,则会返回四个字节(18 20 23 27),并显示相同的症状。

我很高兴每个Telnet服务器运行良好,因为我可以使用标准的Telnet应用程序使用Telnet从我的Mac连接并登录到两个盒子,我也可以在每台计算机上Telnet到本地主机。我很高兴,因为我可以使用串行终端(任何)连接到互联网的Telnet资源,但是,当连接到Linux登录提示符时,我显然缺少某些东西,任何想法可能是什么?

亲切的问候

约翰

UPDATE:进一步的调查表明,我所看到的是来自服务器的尝试让我洽谈几个选项。我看到的字节每个都以FF开头(由于FF从监视中被滤除,最初没有注意到这一点)。的字节是Telnet协议的一部分,并且表示以下含义:

  • FF FD 18注销
  • FF FD 20的数据输入端子
  • FF FD 27输出标记
  • FF FD 24的终端类型

现在的问题是,我该如何回应?

+0

通过打开telnet二进制文件的套接字级调试,可以获得有关该错误的更多信息。使用'telnet -d '或telnet会话类型'toggle debug'来启用和禁用调试。 – Gaurav

+0

正如问题中提到的,当使用telnet 时,没有错误。而我的自制Telnet客户端在连接到Telnet BBS时工作正常,但是,当连接到Linux登录时,我会收到上述响应。我在想这是我不处理的某种应用协议。 –

+0

通过快速搜索,似乎您可以通过“WONT”回复响应任何服务器的请求,即服务器:0xFF xx - 您:0xFF 0xFC xx。见例如[这里](http://mud-dev.wikidot.com/telnet:negotiation)。 – JimmyB

回答

0

JimmyB的帮助下,我发现了需要的方法,以便回答我自己的问题。

如前所述,从Telnet服务器收到的序列是服务器尝试协商某些连接选项。这些选项旨在增强网络虚拟终端(NVT)在每端的默认配置。这些选项请求只需要按照JimmyB的建议进行确认。

该过程在RFC854中定义,它清楚地表明我应该用WILL或WONT来响应DO请求,并用DO或DONT来请求请求。

在我的情况下,我不需要这些增强功能,因为我很满意连接的默认NVT。因此,为了进入Linux登录提示,我使用WONT响应每个DO请求,例如;

当接收到以下DO请求(FD指示DO为选项18)

FF FD 18 

我用WONT响应(由FC表示)

FF FC 18 

同样响应如果我已经收到了将要求(FB)

FF FB 18 

我会返回一个不要(FE)

FF FE 18 

我希望这有助于。

相关问题