Чтобы получить доступ к 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>
Так в чем же проблема?
Предполагая, что вы можете получить файл с помощью wget
, как предложил Эрик Карвалью (wget www.ietf.org./rfc.html
), проблема, скорее всего, заключается в том, что веб-сервер завис на вас, потому что вы отправили запрос недостаточно быстро. [ 119]
Каждый раз, когда извлекается страница, устанавливается отдельное TCP-соединение с HTTP-портом веб-сервера. После подключения, если вы не отправите команду достаточно быстро, сервер будет предполагать, что соединение прервано (что случается довольно часто, даже если большинство веб-браузеров минимизируют его, должным образом прерывая свои TCP-соединения, когда они сделаны). [ 1110]
Если ваша цель - просто загрузить страницу и посмотреть ее, вам следует использовать wget
, curl
или fetch
вместо telnet
. Вы можете просмотреть файл в командной строке с помощью cat
или less
.
Если ваша цель - поиграть с использованием telnet для доступа к веб-контенту - например, чтобы улучшить ваше понимание HTTP - тогда вы можете подумать о написании программы или сценария (это может быть даже сценарий оболочки), который действует как простой интерфейс для telnet
, принимая имя сервера и команды HTTP, а затем подключается к серверу, после чего быстро отправляя команду (команды).