Рубріки: Теория

Протокол HTTP: обзор для чайников

Светлана Лазутина

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

Содержание:
1. Составляющие HTTP
2. Клиент
3. Веб-сервер
4. Прокси
5. Как работает HTTP-протокол
6. Основные характеристики HTTP-протокола
7. HTTP-протокол — простой, но многофункциональный

Составляющие HTTP

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

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

Схематичное изображение работы HTTP-протокола

Итак, мы выяснили, что HTTP содержит три основных элемента:

  • Клиент
  • Сервер
  • Прокси-сервер

Рассмотрим подробнее, что это такое и как они работают.

Клиент

Клиент — это любой инструмент, который действует от имени пользователя. В основном эту роль выполняет веб-браузер, но помимо браузера это быть программы, используемые инженерами или веб-разработчиками для отладки своих приложений. Клиент всегда инициирует запрос, это никогда не делает сервер.

Веб-сервер

На другой стороне канала связи находится сервер, который обслуживает документ по запросу клиента. Хотя для пользователя сервер выглядит как одна виртуальная машина, на самом деле это может быть набор серверов, разделяющих нагрузку. С другой стороны, несколько серверов могут быть расположены на одной и той же машине. При HTTP/1.1 и заголовке Host они могут даже использовать один и тот же IP-адрес.

Прокси

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

Веб-разработчики могут использовать прокси для следующих целей:

  • Кэширование. Кэш-серверы сохраняют веб-страницы или другой контент локально, для более быстрого поиска информации и снижения требований к пропускной способности сайта.
  • Аутентификация. Для контроля прав доступа к приложениям и онлайн-информации.
  • Логирование. Нужен для хранения данных, таких как IP-адреса клиентов, отправивших запросы на сервер.
  • Веб-фильтрация. Контролирует доступ к веб-страницам, которые могут быть небезопасными или содержать неприемлемый контент.
  • Балансировка нагрузки. Позволяет обрабатывать клиентские запросы не одному серверу, а сразу нескольким.

Как работает HTTP-протокол

Шаг первый: направляем URL в браузер.
Когда мы хотим посмотреть веб-страницу, мы можем использовать разные типы девайсов: ноутбук, стационарный компьютер или телефон. Главное, чтобы на устройстве было приложение браузера. Пользователь либо вводит унифицированный указатель ресурса (URL) в поисковую строку браузера, либо переходит по ссылке с уже открытой страницы:

URL-адрес начинается с HTTP. Это сигнал браузеру, что ему необходимо использовать HTTP-протокол для получения документа по этому адресу.

Шаг второй: браузер ищет нужный IP-адрес.
Обычно IP-адреса содержат удобные и читабельные для человека названия доменов, например «highload.today» или «wikipedia.org». Браузер использует преобразователь DNS для сопоставления домена с IP-адресом.

Шаг третий: браузер посылает HTTP-запрос.

Как только браузер определяет IP-адрес компьютера, на котором размещен запрошенный URL, он отправляет HTTP-запрос.

HTTP-запрос может состоять всего из двух строк текста:

GET/index.html HTTP/1.1
Host: www.example.com

Первое слово — это GET. С его помощью мы показываем, что хотим получить информацию. Следующая часть указывает путь: /index.html. Главный компьютер хранит содержимое всего веб-сайта, поэтому необходимо прописать, какую именно страницу нужно загрузить. Последняя часть первой строки указывает протокол и версию протокола: «HTTP/ 1.1». Во второй строке указывается домен запрошенного URL.

Кроме GET в HTTP-протоколе существует еще два вида запросов. Разберем их отличия:

  • GET. Сообщения, отправленные на сервер, содержат только URL-адрес. В конец URL-адреса можно добавить несколько дополнительных параметров данных. Сервер обрабатывает необязательную часть данных URL-адреса, если она есть, и возвращает результат (веб-страницу или элемент веб-страницы) в браузер.
  • POST. Сообщения помещают любые необязательные параметры данных в тело сообщения запроса, а не добавляют их в конец URL-адреса.
  • HEAD. Запросы работают так же, как и в случае GET. Но вместо ответа с полным содержимым URL-адреса сервер отправляет обратно только информацию заголовка, которая находится в разделе HTML.

Шаг четвертый: сервер отправляет HTTP-ответ.

Как только хост-компьютер получает HTTP-запрос, он отправляет клиенту ответ с содержанием и метаданными.

HTTP-ответ начинается аналогично запросу:

HTTP/1.1 200 ОК

Ответ начинается с указания версии HTTP-протокола — 1.1. Следующее число — это код статуса HTTP, в примере это число 200. Этот код значит, что запрашиваемый документ был успешно извлечен.

Следующая часть ответа HTTP — это заголовки. Они предоставляют браузеру дополнительные сведения и помогают ему отображать контент. Эти два заголовка являются общими для большинства запросов:

Content-Type: text/html; charset=UTF-8
Content-Length: 208

Content-type сообщает браузеру, какой тип документа он отправляет обратно. Самый распространенный тип документа в интернете — это text/html, потому что все веб-страницы представляют собой текстовые файлы HTML. Но есть и другие типы, например, изображения, видео, скрипты и все остальное, что можно загрузить в браузер.

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

Кроме кода 200, в случае если загрузка страницы прошла успешно, есть еще несколько статусов:

  • 201 Created. Это означает, что запрос был успешным и ресурс был создан. Код используется для подтверждения успеха запроса PUT или POST.
  • 300 Moved Permanently. Этот код ответа означает, что URL-адрес запрошенного ресурса был изменен навсегда.
  • 400 Bad Request. Запрос был сформирован неверно. Это происходит с запросами POST и PUT, когда данные не проходят проверку или имеют неправильный формат.
  • 401 Unauthorized. Эта ошибка указывает на то, что вам необходимо выполнить аутентификацию перед доступом к ресурсу.
  • 404 Not Found. Этот код показывает, что не удалось найти требуемый ресурс. 404 означает, что URL-адрес не распознается или запрашиваемого ресурса нет в указанном месте.
  • 405 Forbidden. Используемый метод HTTP не поддерживается для этого ресурса.
  • 409 Conflict. Код указывает на произошедший конфликт. Например, вы используете запрос PUT для создания одного и того же ресурса дважды.
  • 500 Internal Server Error. Как правило, ответ 500 используется, когда обработка запроса завершается неудачно из-за непредвиденных обстоятельств на стороне сервера.

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

Основные характеристики HTTP-протокола

Есть три основные особенности, которые делают HTTP простым, но мощным протоколом.

  1. HTTP-клиент, то есть браузер, инициирует HTTP-запрос и после этого ожидает ответ. Сервер обрабатывает запрос и отправляет ответ, после чего соединение прерывается. Получается, что клиент и сервер знают друг о друге только во время текущей сессии. Дальнейшие запросы выполняются уже при новом подключении, а клиент и сервер будут новыми друг для друга.
  2. HTTP не зависит от носителя. Любой тип данных может быть отправлен по HTTP, если и клиент и сервер знают, как обрабатывать его содержимое. От клиента и сервера требуется только указать тип контента, используя соответствующий MIME-тип.
  3. HTTP не имеет состояния (stateless). Как уже говорилось выше, HTTP не поддерживает постоянное соединение и поэтому HTTP является протоколом без состояния. Сервер и клиент знают друг друга только во время текущего запроса. Из-за такого характера протокола ни клиент, ни браузер не могут сохранять информацию между различными запросами.

HTTP-протокол — простой, но многофункциональный

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

  • Скорость передачи. Веб-страница содержит разные элементы, такие как текст и изображения. Для каждого элемента требуется разное количество ресурсов для хранения и загрузки. HTTP позволяет нескольким соединениям загружать отдельные элементы одновременно, тем самым ускоряя передачу данных.
  • Гибкость протокола. Клиент всегда знает, какой тип файла нужно будет загрузить. Благодаря этому приложение на стороне клиента может быстро загрузить расширения или модули, если для отображения данных необходимы дополнительные ресурсы. Так, например, это могут быть Flash-плееры или программы чтения PDF-документов.
  • Безопасность соединения. HTTP 1.0 загружает каждый файл через независимое соединение, а затем закрывает его. Это снижает риск перехвата данных во время передачи..
  • Легкость программирования. HTTP закодирован в виде обычного текста, поэтому его легче реализовать, чем протоколы, которые используют код. Данные форматируются в виде текста, а не строк переменных или полей.
  • Возможности поиска. Хотя HTTP — простой протокол обмена сообщениями, он позволяет искать информацию в базе данных с помощью одного запроса.Можно использовать протокол для выполнения SQL-поиска и возврата результатов, отформатированных в HTML-документе.

Для закрепления материала можно посмотреть эти два образовательные видео:

 

Останні статті

Обучение Power BI – какие онлайн курсы аналитики выбрать

Сегодня мы поговорим о том, как выбрать лучшие курсы Power BI в Украине, особенно для…

13.01.2024

Work.ua назвал самые конкурентные вакансии в IТ за 2023 год

В 2023 году во всех крупнейших регионах конкуренция за вакансию выросла на 5–12%. Не исключением…

08.12.2023

Украинская IT-рекрутерка создала бесплатный трекер поиска работы

Unicorn Hunter/Talent Manager Лина Калиш создала бесплатный трекер поиска работы в Notion, систематизирующий все этапы…

07.12.2023

Mate academy отправит работников в 10-дневный оплачиваемый отпуск

Edtech-стартап Mate academy принял решение отправить своих работников в десятидневный отпуск – с 25 декабря…

07.12.2023

Переписки, фото, история браузера: киевский программист зарабатывал на шпионаже

Служба безопасности Украины задержала в Киеве 46-летнего программиста, который за деньги устанавливал шпионские программы и…

07.12.2023

Как вырасти до сеньйора? Девелопер создал популярную подборку на Github

IT-специалист Джордан Катлер создал и выложил на Github подборку разнообразных ресурсов, которые помогут достичь уровня…

07.12.2023