В статье рассказывается:
- Что такое HTTP
- 3 составляющих системы HTTP
- Структура сообщения и методы HTTP
- Порядок работы HTTP протокола
- Плюсы и минусы HTTP
-
Пройди тест и узнай, какая сфера тебе подходит:
айти, дизайн или маркетинг.Бесплатно от Geekbrains
HTTP – это протокол для передачи информации, который появился на заре Интернета. Спустя десятилетия, он не потерял актуальности, но уже не является безальтернативным вариантом. По сути, данный протокол отвечает за то, получит ли конечный пользователь информацию по своему запросу или нет.
Чтобы лучше понять механизм работы HTTP, стоит вникнуть в его структуру и методы. В нашей статье мы расскажем, как устроен этот протокол, разберем системы, в которых он работает, и поговорим о преимуществах и недостатках HTTP.
Что такое HTTP
HTTP представляет собой протокол передачи данных. В древнегреческом языке слово протокол состоит из двух частей, которые можно перевести как «первый» и «клей». Раньше так называли листок, который приклеивался к свитку. Автор записывал на нем свое имя, дату написания и прочую служебную информацию. При этом для обывателя, который читал свиток, была важна его содержательная часть, а не информация о самом писателе.
Нечто похожее мы можем наблюдать и в HTTP протоколе. Обычному человеку вряд ли будет интересен принцип работы страниц сайтов, так как браузер сделает всю работу за него.
Итак, протокол — это совокупность правил, регламентирующих какое-либо мероприятие. В свою очередь, протокол передачи данных — это стандарт, предписывающий правила функциональных блоков в процессе передачи данных.
Теперь поговорим об аббревиатуре HTTP. HyperText Transfer Protocol можно перевести как «протокол передачи гипертекста».
Рассмотрим три определения данного термина, которые раскрывают его с разных сторон.
HTTP протокол — это протокол передачи данных седьмого уровня модели OSI, функционирующий на базе технологии клиент-сервер.
HTTP протокол — это абстракция над третьим и четвертым уровнем эталонной модели, которая расширяет возможности коммуникации между пользователями. На сегодняшний день благодаря этому своду предписаний можно передавать любые данные.
входят в ТОП-30 с доходом
от 210 000 ₽/мес
Скачивайте и используйте уже сегодня:
Топ-30 самых востребованных и высокооплачиваемых профессий 2023
Поможет разобраться в актуальной ситуации на рынке труда
Подборка 50+ бесплатных нейросетей для упрощения работы и увеличения заработка
Только проверенные нейросети с доступом из России и свободным использованием
ТОП-100 площадок для поиска работы от GeekBrains
Список проверенных ресурсов реальных вакансий с доходом от 210 000 ₽
HTTP протокол – это своего рода правила дорожного движения в Сети. При этом в реальности люди нередко нарушают ПДД и не испытывают никаких неудобств, тогда как нарушение правил HTTP приводит к невозможности работы в Интернете.
3 составляющих системы HTTP
HTTP является клиент-серверным протоколом. Иными словами, запрос инициируется либо одной, либо другой стороной — участником обмена (user-agent) (или прокси вместо него). В большинстве случаев таким участником является веб-браузер. Однако в качестве него может выступать любой объект. К примеру, робот, который открывает страницы в Интернете с целью пополнения и обновления данных индексации веб-страниц для поисковых систем.
Клиент: участник обмена
Участником обмена может являться любой инструмент или устройство, которое выступает в качестве представителя пользователя. Как правило, речь идет о веб-браузерах. При этом участником может являться программа, с которой работает инженер или веб-разработчик для устранения ошибок в своих приложениях.
В отличие от браузера, сервер обычно не формирует запросы. Но с развитием Интернета появились технологии, которые позволили делать и это.
Для отображения веб-страницы браузер осуществляет отправку начального запроса и получает HTML-документ целевой страницы. Затем программа исследует полученный файл и запрашивает остальные данные, которые нужны для отображения содержания страницы.
Речь идет о исполняемых скриптах, информации о макете страницы (CSS таблицы стилей) и дополнительных ресурсов (изображений и видеофайлов, которые сами по себе не являются составляющими исходного документа, но расположены в других местах Интернета).
После этого браузер объединяет полученные данные. Благодаря этому пользователь может взаимодействовать с одним документом, а не множеством не связанных между собой файлов. Скрипты, которые выполняет браузер, могут принимать дополнительные данные на последующих стадиях обработки страницы (в этом случае программа обновляет страницу для корректного отображения информации).
Скачать файлВеб-страница представляет собой гипертекстовый документ. Иными словами, определенные фрагменты текста имеют ссылки, по которым можно перейти на другие страницы. Делается это, как правило, посредством нажатия кнопки мыши. Благодаря этому вы можете путешествовать по Сети. После нажатия на ссылку браузер формирует другой HTTP-запрос и отображает ответ в читабельной форме.
Веб-сервер
Вторым участником обмена является сервер, который необходим для обслуживания пользователя. Именно он предоставляет данные после того, как получает запрос. При этом сервер не всегда является одним единым объектом. Во многих случаях речь идет о совокупности серверов, которые равномерно получают нагрузку от различных пользователей.
Один сервер может быть установлен на несколько машин. При этом в некоторых случаях на одном устройстве располагаются сразу несколько серверов. Версия HTTP/1.1 и Host-заголовок позволяют делить даже IP-адрес.
Прокси
Браузер и сервер связываются между собой посредством многочисленных сетевых узлов, которые выступают в качестве передатчиков HTTP сообщений. Из-за слоистой структуры практически всех из них функционируют также на транспортном, сетевом или физическом уровнях. Тем самым они становятся прозрачными на HTTP слое и могут негативно влиять на производительность.
Читайте также!
Такие операции на уровне приложений называются прокси. Они могут быть как прозрачными, так и непрозрачными (изменяющиеся запросы не будут проходить через них).
на курсы от GeekBrains до 08 декабря
Прокси выполняют следующие функции:
- caching (кеш бывает публичным или приватными, как и в случае с браузером);
- фильтрация (сканирование антивируса, родительский контроль и т.д.);
- выравнивание нагрузки (позволяют нескольким серверам обрабатывать различные запросы);
- аутентификация (контроль доступа к разным ресурсам);
- протоколирование (позволяют сохранять истории операций).
Структура сообщения и методы HTTP
Сообщение HTTP состоит из трех элементов. Они отправляются в определенном порядке:
- Starting line — стартовая строка. Обуславливает тип передаваемого сообщения.
- Headers – заголовки. Описывают тело сообщения, особенности его передачи и прочее.
- Message Body — тело сообщения. Включает в себя ключевую информацию. Стоит упомянуть, что тело сообщения нужно отделить от заголовков пустой строкой.
При этом стартовая строка является обязательным элементом, тогда как заголовки и тело сообщения могут отсутствовать. Дело в том, что стартовая строка определяет тип запроса — ответа. Однако это не относится к сетевому протоколу HTTP версии 0.9. В этом случае сообщение запроса содержит только стартовую строку, а сообщения ответа — лишь тело.
Сервер имеет возможность использовать любые методы. При этом не существует методов, которые являлись бы обязательными для сервера или клиента. Допустим, что у сервера не получилось определить метод, который указал клиент. В этом случае ему нужно возвратить статус 501 – «Not Implemented». Если же определение прошло успешно, но результат нельзя применить к конкретному ресурсу, то будет отображено сообщение с кодом 405 — «Method Not Allowed».
Так или иначе, сервер должен вставить в ответное сообщение заголовок «Allow».
В списке находятся поддерживаемые методы. Любой сервер должен работать с GET и HEAD.
GET — используются для запроса содержимого указанного источника. Данный метод также позволяет начать тот или иной процесс. В этом случае тело сообщения должно содержать в себе сведения об этапе выполнения процесса. В свою очередь, клиент может передать параметры исполнения запроса в URL целевого ресурса сразу после символа «?»: GET/path/resource?.
HEAD – используется примерно таким же образом, что и предыдущий вариант. Данный метод отличается лишь тем, что ответ сервера не будет включать в себя тело. Такой запрос применяется с целью извлечения метаданных, проверки существования ресурса (валидация URL). Кроме того, он позволяет понять, имело ли место изменение ресурса после предыдущего запроса. Другой популярный метод — POST.
Порядок работы 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».
Первое слово указывает на то, что пользователю нужно получить данные. Затем идёт указатель пути (/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/2 является немного более сложным протоколом в связи с встраиванием HTTP сообщений во фреймы в целях повышения производительности. Но все же основная структура сообщений осталась точно такой же, как и в HTTP/1.0. Сессионный поток все ещё прост. Это позволяет выполнять исследование и устранение ошибок с помощью обычного монитора HTTP-сообщений.
Хотите получить одну из самых востребованных профессий в 2023 году? Станьте веб-разработчиком! Всего за 9 месяцев обучения вы познакомитесь с веб-технологиями, изучите популярные языки программирования и сможете самостоятельно создавать адаптивные сайты и интерактивные веб-приложения. Не упустите возможность стать специалистом одной из самых высокооплачиваемых и актуальных направлений. Присоединяйтесь к нам уже сейчас!