Что такое HTTP?

Адрес каждого веб-сайта начинается с «http://» (или «https://»). Это относится к протоколу HTTP, который ваш веб-браузер использует для запроса веб-сайта. Далее мы представим понятие HTTP, объясним различия между версиями и укажем, какие другие понятия связаны с HTTP.

Что означает HTTP?

HTTP расшифровывается как «протокол передачи гипертекста». Он был разработан Тимом Бернерсом-Ли в ЦЕРНе (Швейцария) наряду с другими концепциями, заложившими основу всемирной паутины, такими как HTML и URI. Если HTML (язык разметки гипертекста) определяет структуру и макет веб-сайта, то HTTP управляет тем, как страница передается от сервера к клиенту. Третье понятие URL (Uniform Resource Locator) определяет, как ресурс (например, веб-сайт) должен быть адресован в Интернете.

Итак, что же на самом деле означает термин «гипертекст», используемый в аббревиатурах HTTP и HTML? Он относится к понятию, с которым мы все знакомы: связывание файлов. Гиперссылки размещаются на веб-сайтах и ведут на другие страницы.

Какова цель HTTP?

Если вы вводите в своем веб-браузере интернет-адрес и вскоре после этого на экране появляется веб-сайт, значит, ваш браузер общается с веб-сервером по протоколу HTTP. Образно говоря, HTTP — это язык, на котором ваш браузер общается с веб-сервером, чтобы сообщить ему о запросе.

Как работает HTTP?

Проще всего объяснить, как работает HTTP, на примере запроса веб-сайта:

  1. Пользователь набирает example.com в адресной строке своего интернет-браузера.
  2. Браузер отправляет соответствующий запрос (т.е. HTTP-запрос) на веб-сервер, управляющий доменом example.com. Обычно запрос звучит так: «Пожалуйста, пришлите мне файл». В качестве альтернативы клиент может также спросить: «Есть ли у вас этот файл?».
  3. Веб-сервер получает HTTP-запрос, ищет нужный файл (в данном примере домашнюю страницу example.com, то есть файл index.html) и начинает отправлять обратно заголовок, который информирует запрашивающего клиента о результате поиска с кодом состояния. Более подробную информацию о кодах состояния вы можете найти в нашей последующей статье.
  4. Если файл найден и клиент хочет его отправить (а не просто хочет узнать, существует ли он), то после заголовка сервер отправляет тело сообщения (т.е. фактическое содержимое). В нашем примере это файл index.html.
  5. Браузер получает этот файл и отображает его как веб-сайт.

Когда используется HTTP?

Первоначально протокол HTTP использовался только для запроса HTML-документа с веб-сервера. Сегодня этот протокол имеет множество различных применений:

  • Браузеры используют HTTP для запроса всех типов медиа, используемых на современных веб-сайтах: текста, изображений, видео, программного кода и т.д.
  • Прикладные программы используют HTTP для запроса файлов и обновлений с удаленных серверов.
  • REST-API — это решение на основе HTTP для работы с веб-сервисами.
  • Другой технологией, основанной на HTTP, является WebDAV.
  • HTTP используется в межмашинной коммуникации как протокол для связи между веб-сервисами.
  • Медиаплееры также используют HTTP.
  • Доступ к базам данных в Интернете (т.е. операции CRUD) также может осуществляться с помощью HTTP.

Какие существуют различные версии HTTP?

Оригинальная версия: HTTP/1

История HTTP началась в 1989 году, когда Тим Бернерс-Ли и его команда в ЦЕРНе разработали всемирную паутину. Первоначальная версия HTTP была обозначена как версия 0.9 и называлась «однострочным протоколом». Он мог запрашивать у сервера только один HTML-файл.

GET /dummy.html

Все, что делал сервер, это отправлял соответствующий файл. Поэтому эта версия протокола могла работать только с файлами HTML.

В 1996 году Рабочая группа инженеров Интернета (IETF) задокументировала версию HTTP/1 в необязательном информационном меморандуме RFC 1945. Был введен новый заголовок, который мог более точно определить как запрос клиента, так и ответ сервера. Одним из новых заголовков был заголовок «тип содержимого», который позволял передавать файлы, отличные от HTML. Ниже приводится краткое описание возможностей этой версии HTTP:

  • Бесконнектность: Клиент устанавливает соединение с сервером, посылает запрос, сервер отвечает, а затем соединение прерывается. Для следующего запроса клиенту придется заново устанавливать соединение. Это неудобно, поскольку веб-сайт обычно состоит из нескольких файлов, и каждый из них должен быть получен с помощью отдельного запроса.
  • Нестационарный: Две стороны (т.е. клиент и сервер) сразу же «забывают» друг о друге. В следующий раз, когда клиент войдет на сервер, сервер не будет помнить, что клиент ранее отправлял запрос.
  • Независимость от носителя: Любой тип файла может быть отправлен по протоколу HTTP, если обе стороны знают, как обрабатывать соответствующий тип файла.

Первый официальный стандарт: HTTP/1.1

В 1997 году была опубликована версия HTTP/1.1, о чем говорится в информационном меморандуме RFC 2068. Она стала первым официальным стандартом и используется по сей день. Она предложила несколько важных нововведений по сравнению с HTTP/1:

  • Keepalive: Клиент может сохранить соединение, полученное в результате запроса, открытым (т.е. постоянное соединение), отправив keepalive в заголовке запроса.
  • HTTP pipelining позволяет клиенту отправить еще один запрос до того, как он получил ответ на первый.
  • В чатах браузер может обновлять окно браузера, используя MIME-тип multipart/replace.
  • Данные также могут быть отправлены с клиента на сервер.
  • Недавно введенный метод TRACE позволяет проследить путь от клиента до веб-сервера.
  • Кэш: Существуют новые механизмы для кэширования содержимого.
  • Хост: HTTP-запрос будет работать благодаря заданной спецификации в заголовке (т.е. host), даже если несколько различных доменов размещены под одним IP-адресом, как это происходит с большинством веб-сайтов сегодня (т.е. общий хостинг).

Срочно необходимое обновление: HTTP/2

С годами веб-сайты становятся все больше и сложнее. Чтобы загрузить современный сайт в браузер, браузеру необходимо запросить несколько мегабайт данных и отправить до нескольких сотен HTTP-запросов. Поскольку HTTP/1.1 требует, чтобы запросы через соединение обрабатывались один за другим, чем сложнее сайт, тем больше времени потребуется для загрузки страницы.

В ответ на это Google разработал новый экспериментальный протокол под названием SPDY (произносится как «скоростной»). Он был с большим интересом встречен сообществом разработчиков и в итоге привел к выпуску версии протокола HTTP/2 в 2015 году. Этот новый стандарт представил следующий неполный список нововведений, все из которых призваны ускорить время загрузки веб-сайтов:

  • Бинарный: Протокол основан на двоичных данных вместо текстовых файлов.
  • Мультиплексирование: Клиент и сервер могут отправлять или обрабатывать несколько HTTP-запросов одновременно.
  • Сжатие: Заголовки сжимаются. Поскольку заголовки часто почти одинаковы во многих HTTP-запросах, их сжатие устраняет ненужную избыточность.
  • Подталкивание сервера: Если сервер уже знает, какие данные потребуются клиенту, он может самостоятельно отправить их в клиентский кэш, не получив предыдущего HTTP-запроса.

HTTP/2 смог быстро зарекомендовать себя, особенно на веб-сайтах с большим трафиком, которые вскоре перешли на него. По данным W3Techs, в настоящее время (по состоянию на январь 2020 года) около 42% веб-сайтов используют HTTP/2.

Совет

Для получения более подробной информации о HTTP/2 ознакомьтесь со статьей «Как HTTP/2 оптимизирует всемирную паутину».

Будущее: HTTP/3

Слабым местом всех предыдущих версий HTTP был лежащий в основе транспортный протокол TCP. Этот протокол требует от получателя подтверждения каждого пакета данных перед отправкой следующего. Если один пакет данных теряется, все остальные пакеты вынуждены ждать, пока потерянный пакет будет отправлен снова. Эксперты называют это блокировкой в голове линии.

Поэтому в основе нового HTTP/3 будет лежать уже не TCP, а UDP, который не требует никаких мер по исправлению подобной ситуации. Протокол QUIC (Quick UDP Internet Connections) был разработан на основе UDP в качестве основы для HTTP/3.

HTTP/3 еще не был окончательно принят IETF. Тем не менее, по данным W3Techs, почти 3% веб-сайтов уже используют QUIC или HTTP/3.

Оцените статью
cdelat.ru
Добавить комментарий