» » Перестал работать протокол http

Перестал работать протокол http

протокол, который каждый разработчик должен знать (часть 1)

HTTP - это протокол передачи гипертекста между распределёнными системами. По сути, http является фундаментальным элементом современного Web-а. Как уважающие себя веб разработчики, мы должны знать о нём как можно больше.

Давайте взглянем на этот протокол через призму нашей профессии. В первой части пройдёмся по основам, посмотрим на запросы/ответы. В следующей статье разберём уже более детальные фишки, такие как кэширование, обработка подключения и аутентификация.

Также в этой статье я буду, в основном, ссылаться на стандарт RFC 2616: Hypertext Transfer Protocol -- HTTP/1.1.

Основы HTTP

HTTP обеспечивает общение между множеством хостов и клиентов, а также поддерживает целый ряд сетевых настроек.

В основном, для общения используется TCP/IP, но это не единственный возможный вариант. По умолчанию, TCP/IP использует порт 80, но можно заюзать и другие.

Общение между хостом и клиентом происходит в два этапа: запрос и ответ. Клиент формирует HTTP запрос, в ответ на который сервер даёт ответ (сообщение). Чуть позже, мы более подробно рассмотрим эту схему работы.

Итак, первое, что нужно понимать, протокол HTTP – это всего лишь один, из множества протоколов (почитайте об этом здесь), которыми можно пользоваться в сети Интернет. У него есть собственные цели и задачи.

Программное обеспечение, которое работает с этим протоколом, называется браузер. Знакомая программа, правда?

Когда вы заходите в браузер, не важно, какой именно браузер у вас установлен, и вводите в адресную строку адрес к сайту, то браузер автоматически прибавляет к адресу приставку «http://». Единственное, эта приставка может быть по умолчанию скрыта, но если скопировать адрес и вставить его в другое место, то ее без труда можно будет увидеть.

  • Браузеры - программы, позволяющие просматривать Интернет-странички;
  • Скачивальщики - программы, позволяющие скачивать из Интернета странички,
    рисунки и другие документы;
  • Чаты - программы, позволяющие общаться по сети. Часто документы HTTP
    используются для хранения сообщений (как, например, в конференциях).

- Это лишь список некоторых из стандартных направлений программирования с
использованием HTTP. Вы можете применять этот протокол для любых своих целей.
Например, автоматические системы обновления данных, посылка запросов в Интернетовские
базы, и еще множество всяческих других возможностей!

Краткое описание свойств, методов и событий

GET / HTTP/1.1

Метод (в англоязычной тематической литературе используется слово method, а также иногда слово verb — «глагол») представляет собой последовательность из любых символов, кроме управляющих и разделителей, и определяет операцию, которую нужно осуществить с указанным ресурсом. Спецификация HTTP 1.1 не ограничивает количество разных методов, которые могут быть использованы, однако в целях соответствия общим стандартам и сохранения совместимости с максимально широким спектром программного обеспечения как правило используются лишь некоторые, наиболее стандартные методы, смысл которых однозначно раскрыт в спецификации протокола.

URI (Uniform Resource Identifier, унифицированный идентификатор ресурса) — путь до конкретного ресурса (например, документа), над которым необходимо осуществить операцию (например, в случае использования метода GET подразумевается получение ресурса). Некоторые запросы могут не относиться к какому-либо ресурсу, в этом случае вместо URI в стартовую строку может быть добавлена звёздочка (астериск, символ «*»). Например, это может быть запрос, который относится к самому веб-серверу, а не какому-либо конкретному ресурсу. В этом случае стартовая строка может выглядеть так:

OPTIONS * HTTP/1.1

Версия определяет, в соответствии с какой версией стандарта HTTP составлен запрос. Указывается как два числа, разделённых точкой (например 1.1).

Для того, чтобы обратиться к веб-странице по определённому адресу (в данном случае путь к ресурсу — это «/»), нам следует отправить следующий запрос:

GET / HTTP/1.1
Host: alizar.habrahabr.ru

Что необходимо сделать:
- прислать в вирусную лабораторию Dr. Web несколько зашифрованных файлов и, если есть, их не зашифрованные копии в категорию Запрос на лечение. Дожидаться ответа на Вашу почту вирусного аналитика и далее следовать его указаниям ведя с ним переписку по почте. На форуме рекомендуется указать номер тикета вирлаба - это номер Вашего запроса, содержащий строку вида [drweb.com #3219200];
- собрать и выложить в своей теме логи утилит, указанных в Правилах этого раздела форума.

<p>Read this nice <a href=»//example.com/2014/12/24/»>new post on cats!</a></p>

<p>Check out this <a href=»http://foo.com/»>other cool site.</a></p>

<h1>Welcome To Example.com</h1>

<script src=»/jquery.js»></script>

<link rel=»stylesheet» href=»//assets.example.com/style.css»/>

<img src=»//img.example.com/logo.png»/>

<p>Read this nice <a href=»/2014/12/24/»>new post on cats!</a></p>

<p>Check out this <a href=»http://foo.com/»>other cool site.</a></p>

Заголовок Upgrade используется для изменения протокола.

Transfer-Encoding предназначается для разделения ответа на несколько фрагментов с помощью Transfer-Encoding: chunked. Это нововведение версии HTTP/1.1.

Заголовки сущностей

В заголовках сущностей передаётся мета-информация контента:

Все заголовки с префиксом Content- предоставляют информацию о структуре, кодировке и размере тела сообщения.

Заголовок Expires содержит время и дату истечения сущности. Значение “never expires” означает время + 1 код с текущего момента. Last-Modified содержит время и дату последнего изменения сущности.

С помощью данных заголовков, можно задать нужную для ваших задач информацию.

Формат запроса

Запрос выглядит примерно так:

И, напоследок, небольшой совет для развития вашего сайта.

Огромная проблема большинства сайтов заключается в том, что к ним приходят посетители, читают какую-то информацию и уходят с сайта.

Неплохой пример работы с процессами можно найти в подпапке Demos\Threads
папки, куда Вы установили Delphi.

Замечания по алгоритмам типовых задач

Многие архитектурные решения, используемые в протоколе SPDY, а также в других предложенных реализациях, которые рабочая группа httpbis рассматривала в ходе подготовки черновика спецификации HTTP 2.0, уже ранее были получены в ходе разработки протокола HTTP-NG, однако работы над протоколом HTTP-NG были прекращены в 1998.

На данный момент поддержка протокола SPDY есть в браузерах Firefox, Chromium/Chrome, Opera, Internet Exporer и Amazon Silk.

И что, всё?


В общем-то, да. Можно было бы описать конкретные методы и заголовки, но фактически эти знания нужны скорее в том случае, если вы пишете что-то конкретное (например, веб-сервер или какое-то клиентское программное обеспечение, которое связывается с серверами через HTTP), и для базового понимания принципа работы протокола не требуются. К тому же, всё это вы можете очень легко найти через Google — эта информация есть и в спецификациях, и в Википедии, и много где ещё.

Впрочем, если вы знаете английский и хотите углубиться в изучение не только самого HTTP, но и используемых для передачи пакетов TCP/IP, то рекомендую прочитать вот эту статью.

Ну и, конечно, не забывайте, что любая технология становится намного проще и понятнее тогда, когда вы фактически начинаете ей пользоваться.

Удачи и плодотворного обучения!

Наверх