您在网络上进行的所有操作(例如浏览网页和阅读电子邮件)是否都可以通过 Telnet 完成?
答案1
是的,尽管这会丧失压缩的好处,并且在 SMTP 中使用分块的 GET 响应或 Base64 编码的登录名/密码会很痛苦,所以除了测试目的外,我不建议实际使用它,如果您想在网络上自动执行某些操作,请使用 Perl 或 python。
此外,如果您想要发出与特定浏览器发出的请求无法区分的请求(当您尝试使用受 Bad Behavior 等系统保护的网站时,不得不这样做是一个可悲的现实),请考虑编写一个微型服务器,它将逐字输出您的请求(有这样的例子,但它们可能需要一些轻微的修改)。然后,您将能够使用它作为模板向此类网站发出简单的请求。
例如,尝试
telnet google.com 80
初始化完成后,输入
GET / HTTP/1.0
然后按两次 ENTER(这是 HTTP 协议的要求)。您将获得 302 响应,浏览器通常会使用此响应将您重定向到 WWW.google.com。
答案2
Telnet 可用于(几乎)原始 TCP 连接,并且可以使用基于字符的协议,但有一些差异:
因此,Telnet 客户端应用程序也可用于建立交互式原始 TCP 会话,并且人们普遍认为,不使用 IAC(\377 字符,即十进制的 255)的此类会话在功能上是相同的。然而,事实并非如此,因为还有其他网络虚拟终端 (NVT) 规则,例如要求裸回车符 (CR,ASCII 13) 后跟 NULL(ASCII 0)字符,这些规则将 Telnet 协议与原始 TCP 会话区分开来。
否则,您可以使用基于字符使用 Telnet 的应用程序层协议,如 HTTP、FTP、SMTP 和 IRC。由于手动读取和写入压缩数据是一项相当大的挑战,因此您只能使用没有 HTTP/1.1 压缩的 HTTP。对于完全二进制的协议,您几乎没有运气。
答案3
从技术上来说,是的,你可以这样做。但从实际情况来看,答案是否定的:
例如我可以使用以下方式获取网页
telnet www.page.com 80
但我将从中获取 html 文本,而不是 css、图像和其他资源。
然后,使用 html 文件,您可以通过连续的 telnet 调用获取所有其他文件。获取 css 很容易,获取文件、js 和其他“包含”文件也一样。但二进制文件并不那么容易,因为我必须下载它然后处理它,还不算某些资源需要特定的 cookie 和 ref。
而且该网站可能强制使用 z 压缩和许多其他“细节”,这些细节在协议规范中“详细”描述,该协议几乎没有修补,并且有几个例外。
虽然这是可能的,但是从头开始构建一个现有的服务/协议是一样的,所以,这和说“我可以通过“戳”零和一来构建 Windows”是一样的。<--这是可能的,但是这样做会花费大量的时间。
无法完全加载的网站示例是 gmail.com,因为它还包含额外的复杂性:javascript(不包括 Lynx,因为它不是原生的,也不是真实的体验)。
无论如何,在网络和电子邮件之外,存在一些无法使用普通 telnet 访问的协议,因为它需要某种及时的握手(至少几秒钟),而这种握手无法在不使用某种自动化的情况下使用两个单独的 telnet 调用来模仿,即,我们正在谈论一个不是真正的 telnet 客户端而是通过它进行的客户端。