ТРЕПАНАЦИЯ ПРОТОКОЛА: 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

ttfb: 17.469167709351 ms