telnet 可以与任何基于 TCP/IP 的应用程序级文本协议一起使用吗?

ps-*_*aux 1 networking telnet tcpip http

telnet 可以与任何应用程序级文本协议(如 http 或 smtp)一起使用吗?

Law*_*ceC 6

它可以与大多数人一起使用,对于 HTTP 或 SMTP 等常见协议不会有太大问题,但 Telnet 本身就是一种协议,它确实对一些特殊字符做出反应。

来自 Telnet 维基百科文章:

除了 0xff 之外的所有数据八位字节都按原样通过 TCP 传输传输。因此,Telnet 客户端应用程序也可用于建立交互式原始 TCP 会话,并且通常认为不使用 IAC(0xff,或十进制 255)的此类会话在功能上是相同的。[需要引用]

然而,情况并非如此,因为还有其他网络虚拟终端 (NVT) 规则,例如要求在裸回车符 (CR, ASCII 13) 后跟 NUL (ASCII 0) 字符,以区分来自原始 TCP 会话的 telnet 协议。[需要澄清]

另一方面,许多系统现在拥有真正的原始 TCP 客户端,例如 UNIX 上的 netcat 或 socat 和 Windows 上的 PuTTY,它们也可用于在没有专门的客户端软件的情况下手动与其他服务“对话”。尽管如此,Telnet 有时仍用于调试网络服务,例如 SMTP、IRC、HTTP、FTP 或 POP3 服务器,向服务器发出命令并检查响应,但在所有这些协议中,只有 FTP 真正使用 Telnet 数据格式。

Telnet 与原始 TCP 会话的另一个区别是 Telnet 默认不是 8 位干净的。8位模式可以协商,但是高位组八位字节可能会乱码,直到请求这种模式,在非Telnet连接中显然不会请求。8 位模式(因此称为二进制选项)旨在传输二进制数据,而不是字符。该标准建议将代码 0000-0176 解释为 ASCII,但没有为高位集数据八位字节提供任何含义。曾尝试引入像 HTTP 那样的可切换字符编码支持,[3] 但对其实际软件支持一无所知。

正如上面提到的,nc或者socat是一个更好的工具(并nc让您通过命令行讨论 UDP),即使大多数时间使用 HTTP 等,您也可以很好地使用 telnet。