22

我正在尝试通过 python 脚本向服务器发送命令。我可以看到正在服务器上建立套接字连接。但是我发送的命令似乎没有通过(服务器对套接字进行读取)。服务器当前支持 telnet 命令解释器。即:你telnet到命令地址和端口,你就可以开始发送字符串命令了。我的问题是,与使用 telnet 相比,通过 tcp 套接字发送字符串有什么根本不同。我使用了原始套接字和 Twisted 框架。

4

3 回答 3

23

Telnet 是一种传递有关通信通道的控制信息的方法。它定义了行缓冲、字符回显等,并在连接开始时(以及在极少数情况下,在会话期间)通过一系列 will/wont/do/dont 消息完成。

这可能不是您的服务器文档的意思。相反,这可能意味着您可以使用“Telnet”之类的程序打开一个到端口的 TCP 套接字,并与服务器上的命令解释器进行交互。

当 Telnet 程序连接时,它通常会在实际响应之前侦听这些控制消息,因此将使用实际上不使用 telnet 协议的 TCP/socket 连接,恢复为简单的原始管道。服务器必须执行所有字符回显、行缓冲等。

因此,在您的情况下,服务器可能使用没有 telnet 转义序列的原始 TCP 流,因此没有区别。

于 2012-10-04T15:31:37.053 回答
11

请记住,Telnet 是应用层协议,而 TCP 是传输层协议。Telnet使用TCP 来传输数据。这是 Telnet 和 TCP 之间的一个很大的根本区别。

请参阅: OSI 模型维基百科页面

于 2012-10-04T15:11:55.033 回答
4

来自telnet 上的Wikipedia 页面

...用户数据散布在带内与 Telnet 控制信息...

因此,要回答您的问题,是的,telnet 确实与原始套接字不同。

如果您想尝试实现它,RFC 854描述了 telnet 协议,或者如果您更喜欢现有的 python 客户端,您可以使用telnetlib 。

于 2012-10-04T15:12:30.663 回答