Современные профессии Онлайн-интенсив Только до 3.10
Выберите профессию будущего в ИТ, дизайне, маркетинге и управлении проектами
Кнопка закрыть топ-бар
ГлавнаяБлогHTTP: особенности и использование протокола
HTTP
1 409
Время чтения: 15 минут

HTTP: особенности и использование протокола

1 409
Время чтения: 15 минут
Сохранить статью:
Сохранить статью:
В статье рассказывается:
  1. Что такое HTTP
  2. 3 составляющих системы HTTP
  3. Структура сообщения и методы HTTP
  4. Порядок работы HTTP протокола
  5. Плюсы и минусы HTTP

HTTP – это протокол для передачи информации, который появился на заре Интернета. Спустя десятилетия, он не потерял актуальности, но уже не является безальтернативным вариантом. По сути, данный протокол отвечает за то, получит ли конечный пользователь информацию по своему запросу или нет.

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

Что такое HTTP

HTTP представляет собой протокол передачи данных. В древнегреческом языке слово протокол состоит из двух частей, которые можно перевести как «первый» и «клей». Раньше так называли листок, который приклеивался к свитку. Автор записывал на нем свое имя, дату написания и прочую служебную информацию. При этом для обывателя, который читал свиток, была важна его содержательная часть, а не информация о самом писателе.

Что такое HTTP
Что такое HTTP

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

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

Теперь поговорим об аббревиатуре HTTP. HyperText Transfer Protocol можно перевести как «протокол передачи гипертекста».

Рассмотрим три определения данного термина, которые раскрывают его с разных сторон.

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

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

HTTP протокол – это своего рода правила дорожного движения в Сети. При этом в реальности люди нередко нарушают ПДД и не испытывают никаких неудобств, тогда как нарушение правил HTTP приводит к невозможности работы в Интернете.

3 составляющих системы HTTP

HTTP является клиент-серверным протоколом. Иными словами, запрос инициируется либо одной, либо другой стороной — участником обмена (user-agent) (или прокси вместо него). В большинстве случаев таким участником является веб-браузер. Однако в качестве него может выступать любой объект. К примеру, робот, который открывает страницы в Интернете с целью пополнения и обновления данных индексации веб-страниц для поисковых систем.

Клиент: участник обмена

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

3 составляющих системы HTTP
3 составляющих системы HTTP

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

Для отображения веб-страницы браузер осуществляет отправку начального запроса и получает HTML-документ целевой страницы. Затем программа исследует полученный файл и запрашивает остальные данные, которые нужны для отображения содержания страницы.

Речь идет о исполняемых скриптах, информации о макете страницы (CSS таблицы стилей) и дополнительных ресурсов (изображений и видеофайлов, которые сами по себе не являются составляющими исходного документа, но расположены в других местах Интернета).

После этого браузер объединяет полученные данные. Благодаря этому пользователь может взаимодействовать с одним документом, а не множеством не связанных между собой файлов. Скрипты, которые выполняет браузер, могут принимать дополнительные данные на последующих стадиях обработки страницы (в этом случае программа обновляет страницу для корректного отображения информации).

ТОП-30 IT-профессий
2022 года с доходом
от 200 000 ₽
Команда GeekBrains совместно с международными специалистами по развитию карьеры подготовили материалы, которые помогут вам начать путь к профессии мечты.
Подборка содержит только самые востребованные и высокооплачиваемые специальности и направления в IT-сфере. 86% наших учеников с помощью данных материалов определились с карьерной целью на ближайшее будущее!

Скачивайте и используйте уже сегодня:

Александр Сагун
Александр Сагун
Исполнительный
директор Geekbrains
pdf иконка

Топ-30 самых востребованных и высокооплачиваемых профессий 2022

Поможет разобраться в актуальной ситуации на рынке труда

doc иконка

Подборка 50+ ресурсов об IT-сфере

Только лучшие телеграм-каналы, каналы Youtube, подкасты, форумы и многое другое для того, чтобы узнавать новое про IT

pdf иконка

ТОП 50+ сервисов и приложений от Geekbrains

Безопасные и надежные программы для работы в наши дни

pdf 3,7mb
doc 1,7mb
Уже скачали 14873 pdf иконка

Веб-страница представляет собой гипертекстовый документ. Иными словами, определенные фрагменты текста имеют ссылки, по которым можно перейти на другие страницы. Делается это, как правило, посредством нажатия кнопки мыши. Благодаря этому вы можете путешествовать по Сети. После нажатия на ссылку браузер формирует другой HTTP-запрос и отображает ответ в читабельной форме.

Веб-сервер

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

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

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

Веб-сервер
Веб-сервер

Прокси

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

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

  • caching (кеш бывает публичным или приватными, как и в случае с браузером);
  • фильтрация (сканирование антивируса, родительский контроль и т.д.);
  • выравнивание нагрузки (позволяют нескольким серверам обрабатывать различные запросы);
  • аутентификация (контроль доступа к разным ресурсам);
  • протоколирование (позволяют сохранять истории операций).

Структура сообщения и методы HTTP

Сообщение HTTP состоит из трех элементов. Они отправляются в определенном порядке:

  • Starting line — стартовая строка. Обуславливает тип передаваемого сообщения.
  • Headers – заголовки. Описывают тело сообщения, особенности его передачи и прочее.
  • Message Body — тело сообщения. Включает в себя ключевую информацию. Стоит упомянуть, что тело сообщения нужно отделить от заголовков пустой строкой.

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

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

Сервер имеет возможность использовать любые методы. При этом не существует методов, которые являлись бы обязательными для сервера или клиента. Допустим, что у сервера не получилось определить метод, который указал клиент. В этом случае ему нужно возвратить статус 501 – «Not Implemented». Если же определение прошло успешно, но результат нельзя применить к конкретному ресурсу, то будет отображено сообщение с кодом 405 — «Method Not Allowed».

Так или иначе, сервер должен вставить в ответное сообщение заголовок «Allow».

Только до 3.10
Как за 3 часа
разбираться в IT
лучше, чем 90%
новичков и выйти на
доход в 200 000 ₽?
Приглашаем вас на бесплатный онлайн-интенсив «Путь в IT»! За несколько часов эксперты GeekBrains разберутся, как устроена сфера информационных технологий, как в нее попасть и развиваться.
Александр Волчек CEO GeekBrains

Интенсив «Путь в IT» поможет:

  • За 3 часа разбираться в IT лучше, чем 90% новичков.
  • Понять, что действительно ждет IT-индустрию в ближайшие 10 лет.
  • Узнать как по шагам c нуля выйти на доход в 200 000 ₽ в IT.
При регистрации вы получите в подарок:
pdf иконка

«Колесо компетенций»

Тест, в котором вы оцениваете свои качества и узнаете, какая профессия в IT подходит именно вам

doc иконка

«Критические ошибки, которые могут разрушить карьеру»

Собрали 7 типичных ошибок, четвертую должен знать каждый!

pdf иконка

Тест "Есть ли у вас синдром самозванца?"

Мини-тест из 11 вопросов поможет вам увидеть своего внутреннего критика

Хотите сделать первый шаг и погрузиться в мир информационных технологий? Регистрируйтесь и смотрите интенсив:
Только до 3 октября
Осталось 17 мест

В списке находятся поддерживаемые методы. Любой сервер должен работать с GET и HEAD.

GET — используются для запроса содержимого указанного источника. Данный метод также позволяет начать тот или иной процесс. В этом случае тело сообщения должно содержать в себе сведения об этапе выполнения процесса. В свою очередь, клиент может передать параметры исполнения запроса в URL целевого ресурса сразу после символа «?»: GET/path/resource?.

Структура сообщения и методы HTTP
Структура сообщения и методы HTTP

HEAD – используется примерно таким же образом, что и предыдущий вариант. Данный метод отличается лишь тем, что ответ сервера не будет включать в себя тело. Такой запрос применяется с целью извлечения метаданных, проверки существования ресурса (валидация URL). Кроме того, он позволяет понять, имело ли место изменение ресурса после предыдущего запроса. Другой популярный метод — POST.

Порядок работы HTTP протокола

Направление URL в веб-браузере

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

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

Порядок работы 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».

Первое слово указывает на то, что пользователю нужно получить данные. Затем идёт указатель пути (/index.html). Главный компьютер имеет содержимое всего ресурса, так что следует определить, что именно необходимо получить из HTTP сайта. Далее идёт указатель протокола и его версии (HTTP/ 1.1). Вторая строка содержит домен запрошенного URL.

Отправка сервером HTTP-ответа

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

HTTP-ответ начинается примерно так же, как и запрос:

  • «HTTP/1.1 200 ОК».

Сначала идет версия протокола, а затем число, которое обозначает код статуса HTTP (200). Он указывает на то, что было произведено извлечение искомого документа.

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

  • «Content-Type: text/html; charset=UTF-8»;
  • «Content-Length: 208».

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

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

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

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

Отображение веб-страницы

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

Плюсы и минусы HTTP

На данный момент специалисты определили множество достоинств и недостатков данного протокола.

Достоинства:

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

Недостатки:

  • Нет навигации. Данный протокол не имеет нормальной навигации среди ресурсов сервера. К примеру, клиент не может с легкостью запросить список доступных файлов, как это реализовано в протоколе FTP. Однако проблема устраняется посредством использования расширяющего протокола WebDAV посредством добавленного метода PROPFIND. Этот метод дает пользователю возможность получить дерево каталогов, а также список параметров каждого ресурса.
  • Нет поддержки распределенности. Дело в том, что протокол создавался для решения обычных бытовых задач, которые не занимали много временем при обработке. В процессе промышленного использования с применением распределённых вычислений при больших нагрузках на сервер протокол HTTP оказался малоэффективен. Именно из-за этой причины в 1998 году началась разработка протокола HTTP-NG (англ. HTTP Next Generation). Однако работы над ним ведутся и по сей день.
Итак, HTTP является простым в эксплуатации расширяемым протоколом передачи данных. Структура клиент-сервера и возможность быстрого добавления заголовков обуславливает популярность данного алгоритма действий.

При этом HTTP/2 является немного более сложным протоколом в связи с встраиванием HTTP сообщений во фреймы в целях повышения производительности. Но все же основная структура сообщений осталась точно такой же, как и в HTTP/1.0. Сессионный поток все ещё прост. Это позволяет выполнять исследование и устранение ошибок с помощью обычного монитора HTTP-сообщений.

Оцените статью
Рейтинг: 5
( голосов 1 )
Поделиться статьей
Добавить комментарий

Забрать
гарантированный
подарок

Получите бесплатно подборку файлов от GeekBrains:

Осталось 17 мест

Поздравляем! Вы выиграли 2-х дневный интенсив "Путь в IT". Чтобы закрепить подарок и получить к нему доступ, заполните информацию в открывшемся окне

×
Петр Озеров
Петр Озеров печатает ...