Home > HTTP, Telnet, Инструментарий, Интернет > Что важно знать о HTTP

Что важно знать о HTTP

January 28th, 2010

Продолжение серии статей об Интернет-ботах.

Часть 1, Часть 2, Часть 3

HTTP (Hyper Text Transport Protocol) – это тот самый язык, на котором разговаривают браузеры с веб-серверами.

Самое важное о HTTP:

  • протокол предполагает наличие сервера и клиента (клиент посылает запрос «хочу страницу index.html», сервер отвечает «на тебе эту страницу, вот ее содержимое»)
  • это текстовый протокол (запросы и ответы имеют понятный человеку вид, их можно читать в обычном текстовом редакторе)
  • каждое сообщение состоит из стартовой строки, заголовков и тела (об этом подробнее дальше)

svideteli_osvidetelstvovanija

Перечисленные особенности делают HTTP очень простым и расширяемым. Например, когда возникла задача сохранять информацию на машине клиента, протокол переписывать не пришлось. Все что надо было сделать – добавть один новый заголовок запроса (Cookie) и один – ответа (Set-Cookie).

Ниже по тексту я буду предлагать вам делать разные вещи. Например, скачать Яндекс Telnet-клиентом. «Пощупав» HTTP своими руками, проще понять его принцип. Но можно и просто читать, специально для вас у меня припасены скриншоты :)

Минимальный HTTP запрос

Скачаем содержимое сайта www.ya.ru без браузера. Для этого подойдет Telnet-клиент, который наверняка есть в вашей ОС. Чтобы воспользоваться им в Windows, запустите интерпретатор командной строки (cmd.exe). Далее набирайте текст, как на картинке, и нажимайте Enter.

1

Появился пустой черный экран. Вводите:

GET / HTTP/1.1

Нажимайте Enter. Пусть вас не смущает, что ничего не отображается на экране. Продолжайте ввод:

Host: www.ya.ru

Нажимайте Enter дважды.

Это был HTTP-запрос. А вот и ответ:

2

Что же мы сделали:

  1. подключились к серверу ya.ru на 80-ый порт (стандартный для HTTP)
  2. отправили сообщение, состоящее из стартовой строки и одного заголовка
  3. получили ответ, состоящий из стартовой строки, семи заголовков и тела

В стартовой строке запроса необходимо указать HTTP метод, URI документа и версию HTTP. В заголовке Host – имя хоста. Это был минимальный запрос. Если что-нибудь убрать, сервер скажет «Bad request».

Ответ начинается со стартовой строки «HTTP/1.1 200 OK», что означает, что наш запрос обработан успешно. Нам присылают желанный документ, содержимое которого находится в теле HTTP ответа. Именно его мы увидим, если нажмем в браузере кнопку «Исходный код страницы». Из заголовков хотел бы обратить ваше внимание только на Content-Length – здесь указан размер тела сообщения в байтах.

Пустая строка означает, что заголовки закончились и начинается тело сообщения. Именно поэтому мы нажимали Enter дважды в конце запроса.

Методы HTTP

Стартовая строка запроса начинается с названия метода, то есть имени основной операции, производимой над ресурсом.

Основные методы:

  • GET – используется при наборе адреса вручную или переходе по ссылке
  • POST – используется при отправке формы

Думаю, что распределение частоты запросов примерно такое:

  • 99.9% – GET
  • 0.1% – POST (читают Интернет намного чаще, чем пишут)
  • 0% – другие методы (имеют скорее историческую ценность)

Примечание: не стоит воспринимать эти цифры буквально.

При обращении к серверному скрипту обычно передаются параметры запроса. Например, URI http://svitter.ru/?p=621 означает, что я хочу прочитать статью #621. Методом GET можно передать парамтеры только через URI. С помощью POST их можно передавать как через URI, так и в теле сообщения.

В следующей статье я напишу, как анализировать HTTP трафик. Это необходимо для создания программы, эмулирующей браузер (ведь нам нужен Интернет-бот, помните? :) ).

Comments are closed.