gpt4 book ai didi

telnet - HTTP 服务器如何接受 Telnet

转载 作者:行者123 更新时间:2023-12-02 10:01:34 26 4
gpt4 key购买 nike

据我了解,Telnet 与 HTTP 一样都是一种协议(protocol)。我有这样的想法,在建立初始 TCP 连接后,Telnet 客户端会将一些 telnet 特定代码发送到另一端的服务器(在本例中为 HTTP 服务器)。但由于 HTTP 服务器不理解 Telnet 特定代码,它应该抛出错误或断开连接等。但实际上,如果我们输入正确的 HTTP header 并发送它们,我们可以 telnet 到 HTTP 服务器并获取页面。怎么会这样呢?维基百科条目确实没有帮助我理解这个具体点。 (http://en.wikipedia.org/wiki/Telnet#Telnet_data)

最佳答案

Telnet 只是一种打开与监听套接字的 TCP 连接的简单交互方式。由于 telnet 客户端盲目地将您键入的内容发送到该套接字,因此理论上它可以模拟 TCP 之上的任何其他协议(protocol)。实际上,键盘驱动程序解释不可打印的字符是唯一的限制。

HTTP 不使用不可打印的字符,除非用两个连续的“换行符”(即“空行”)在 HTTP header 和正文之间进行分隔。
请注意,我在这里讨论的不是 HTML 正文标记,而是有效负载(例如 SOAP 正文)。

这里基本上没有魔法。

让我们看看事情的动态。
HTTP 支持许多命令,如 GET、POST、PUT 等...每个命令都有其语法,并且有一个相关的响应,该响应具有商定的语法和明确定义的错误代码。当您使用 telnet 连接到 HTTP 服务器时,您将打开套接字连接,并且服务器会派生一个线程来管理与客户端的对话。然后,您可以通过键入浏览器发送的命令来模拟浏览器。每次敲击 CR 键时,客户端都会将该行提交给服务器。如果命令包含多行,则可以输入多行,每行对应命令头的一行。一旦您连续敲击两个 CR(即空行),服务器就会认为命令头已完成,并将响应放在一起并发回客户端。由于 telnet 客户端的最终目标是回显接收到的字符(除非另有说明),因此您可以在终端窗口上看到响应 header 和正文。 Telnet 就停在那里。浏览器将呈现 HTML(如果响应是 HTML 页面)。
我希望这能澄清一切。

关于telnet - HTTP 服务器如何接受 Telnet,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4731505/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com