一切都可以在 Telnet 中完成吗?

ton*_*sid 7 networking telnet internet email website

您在 Web 上所做的一切(例如 Web 浏览和阅读电子邮件)都可以使用 Telnet 进行,这是真的吗?

Ale*_*nko 8

是的,虽然这会失去压缩的好处,并且在 SMTP 中使用分块的 GET 响应或 Base64 编码的登录名/密码会很痛苦,所以我不建议实际使用它,除非出于测试目的,如果需要,请使用 Perl 或 python自动在网络上做一些事情。

此外,如果您想发出与某个浏览器发出的请求无法区分的请求(当您尝试使用受不良行为等系统保护的站点时,不得不这样做是一个可悲的现实),请考虑编写一个小型的服务器将逐字输出您的请求(有这样的例子四处飞扬,但它们可能需要一些轻微的修改)。然后,您将能够使用它作为模板向此类站点发出简单请求。

例如,尝试

telnet google.com 80
Run Code Online (Sandbox Code Playgroud)

初始化完成后,输入

GET / HTTP/1.0
Run Code Online (Sandbox Code Playgroud)

并按两次 ENTER(根据 HTTP 协议的要求)。您将收到 302 响应,浏览器通常会使用该响应将您重定向到 WWW.google.com。

  • 302 响应中有_is_ 一个页面:) (5认同)
  • 也不是100%准确。您不是从 google.com 请求页面,而是从它的 ip 请求页面!这在 HTTP 规范中,称为主机标头。你必须做`telnet google.com 80 _ GET / HTTP/1.0 _ Host: google.com _ 然后它会工作。您必须告诉服务器您要请求“google.com”,而不是来自该服务器的任何其他子域或域 (3认同)

Dan*_*eck 7

Telnet 可用于(几乎)原始 TCP 连接,您可以使用基于字符的协议,但有一些区别

因此,还可以使用 Telnet 客户端应用程序来建立交互式原始 TCP 会话,并且通常认为这种不使用 IAC(\377 字符,或十进制 255)的会话在功能上是相同的。然而,情况并非如此,因为还有其他网络虚拟终端 (NVT) 规则,例如要求一个空回车符 (CR, ASCII 13) 后跟一个 NULL (ASCII 0) 字符,以区分来自原始 TCP 会话的 telnet 协议。

否则,您可以通过 Telnet使用基于字符的应用层协议,例如 HTTP、FTP、SMTP 和 IRC。因为手动读取和写入压缩数据是一个相当大的挑战,所以您只能使用没有 HTTP/1.1 压缩的 HTTP。对于完全二进制的协议,您几乎不走运。

  • @Teddy:这取决于您认为“the”的应用程序。我已经测试了来自 GNU“inetutils”、Arch“telnet-bsd”、Debian“krb5-clients”、Debian“netkit-telnet-ssl”、PuTTY-svn r9020、Windows XP“telnet.exe”、Windows 98 的 `telnet` “telnet.exe”、Windows XP“超级终端”和它们**都发送 CR/LF 并响应 Telnet 选项协商**,而不管服务器使用的 TCP 端口(在本测试中为 tcp/9)。唯一的区别是只有 **一些**(即 PuTTY)**启动** nego,而无需等待服务器执行此操作。 (3认同)