ТРЕПАНАЦИЯ ПРОТОКОЛА: HTTP
Спецвыпуск Xakep, номер #022, стр. 022-042-1
Ильдар Валитов (ildar@arat.ru)
Знаешь, что означает эта грозная аббревиатура? А, знаешь, как работает этот протокол? Нет? Ну и хорошо, потому как не каждый же должен уметь с паяльником в руках ковыряться в своем телевизоре, вместо того чтобы его смотреть. Так и ты, неоднократно вводя в адресной строке своего браузера, эти заветные буквицы "http://www...", наверное, и не задумывался об их предназначении - слепо следуя чьей-то прихоти. Но, бывают моменты, когда все-таки приходится обращаться к основам HTTP, например, при программировании для интернета.
ВСКРЫТИЕ ПОКАЗАЛО...
HTTP (HyperText Transfer Protocol) дословно переводится, как протокол передачи гипертекста. HTTP - прикладной протокол (обеспечивает работу определенных приложений: веб-браузера и веб-сервера). Схема работы – клиент-серверная. Клиент отсылает запрос, содержащий заголовок запроса. Сервер шлет на это ответ, который состоит из заголовка и данных (в данных содержится как раз то, что запрашивал клиент: веб-страница, какая-нибудь картинка или что-то еще).
Все это происходит в несколько этапов:
1. Клиент связывается с серваком.
2. Клиент запрашивает ресурс с сервака (HTML-файл, например) посредством одного из HTTP-методов (о них – чуть позже).
3. Сервер посылает ответ, в котором содержится заголовок ответа (включающий код состояния HTTP) и сами данные.
4. Сервер закрывает соединение.
Так качается один файл (HTML-страница, графический файл etc). Для скачки каждого нового файла необходимо заново пройти все этапы соединения. Например, если браузер получил таким образом HTML-код странички, адрес которой ввел пользователь, и увидел, что в теле HTML есть ссылки на картинки, он, чтобы грамотно построить всю HTML-страницу и показать ее юзеру, должен связаться с серваком n-ное количество раз и скачать все необходимые картинки.
РАСКЛАДЫВАЕМ КОСТОЧКИ ПО ПОЛОЧКАМ
Так что же это за HTTP-методы такие? Все очень просто: пользуясь определенными методами, клиент говорит серваку, что именно он хочет сделать. Методов несколько, сейчас мы с ними познакомимся:
1. GET – с помощью этого метода клиент сообщает серверу, что он хочет, чтоб сервак прислал ему такой-то файл. Для наглядности давай запустим телнет и попробуем проделать все ручками:
telnet u121.narod.ru 80
В окне терминала мигает символ подчеркивания ("_") – это означает, что сервер ждет запросов от клиента. Ок, дадим ему запрос:
GET /index.html HTTP/1.1
HOST: u121.narod.ru
На это он нам послушно выдаст index.html.
Если попросим какую-нибудь картинку (GET /img/girl.jpg HTTP/1.1) – выдаст и картинку :).
2. HEAD – с помощью этого метода клиент сообщает серверу, что он хочет, чтоб сервер прислал ему хедер о таком-то файле (только хедер, без самого файла!). Попробуем? Вводим:
telnet u121.narod.ru 80
HEAD /index.html HTTP/1.1
HOST: u121.narod.ru
Видишь, самого файла нет – только его описание.
3. POST – с помощью этого метода клиент сообщает серверу, что он хочет передать серверу какие-то данные (например, параметры для cgi-скрипта). С помощью этого метода на сервер отсылаются данные из HTML-форм.
Содержание Вперед на стр. 022-042-2
|