要访问 www.ietf.org/rfc.html,我输入了以下命令:
telnet www.ietf.org 80 > log
get /rfc.html HTTP/1.1
Host: www.ietf.org
当我输入第三条命令时,显示以下消息:
Connection closed by foreign host.
日志条目如下:
> Trying 64.170.98.30...
Connected to www.ietf.org.
Escape character is '^]'.
HTTP/1.1 400 Bad Request
Date: Thu, 27 Dec 2012 09:32:01 GMT
Server: Apache/2.2.10 (Linux/SUSE) mod_ssl/2.2.10 OpenSSL/0.9.8h PHP/5.2.13 with Suhosin-Patch mod_python/3.3.1 Python/2.6 mod_wsgi/3.3 mod_perl/2.0.4 Perl/v5.10.0
Content-Length: 226
Connection: close
Content-Type: text/html; charset=iso-8859-1
<!DOCTYPE HTML PUBLIC "-//IETF//DTD HTML 2.0//EN">
<html><head>
<title>400 Bad Request</title>
</head><body>
<h1>Bad Request</h1>
<p>Your browser sent a request that this server could not understand.<br />
</p>
</body></html>
所以有什么问题?
答案1
假设您能够按照wget
Eric Carvalho 所建议的方式检索文件(wget www.ietf.org./rfc.html
),那么问题很可能是由于您发送请求的速度不够快而导致 Web 服务器挂断了您的连接。
每次检索页面时,都会与 Web 服务器的 HTTP 端口建立单独的 TCP 连接。连接后,如果您没有及时发送命令,服务器将认为连接已放弃(这种情况经常发生,尽管大多数 Web 浏览器在完成后会通过正确终止其 TCP 连接来尽量减少这种情况)。
如果你的目的只是下载页面并查看,你应该使用wget
、curl
或fetch
代替。你可以在命令行中使用或telnet
来查看文件。cat
less
如果您的目标是尝试使用 telnet 访问 Web 内容(例如,为了增强对 HTTP 的理解),那么您可以考虑编写一个程序或脚本(甚至可以是 shell 脚本),通过telnet
获取服务器的名称和 HTTP 命令作为简单的前端,然后连接到服务器,然后快速发送命令。