Программирование  •  29 декабря  2022  •  5 мин чтения

Четыре буквы, на которых держится интернет: что такое протокол HTTP и почему на нём работают почти все сайты

Адрес любого сайта в интернете начинается с букв «http» или «https». Разбираем, что значит эта аббревиатура и что о ней нужно знать веб-разработчикам.

Что такое HTTP

HTTP (от англ. HyperText Transfer Protocol) — протокол передачи гипертекста. Это набор правил, по которым данные в интернете передаются между разными источниками, обычно между компьютерами и серверами. Интернет-протокол HTTP — это шаблон, по которому формируется запрос на передачу данных, а затем передаются интернет-страницы, видео, аудио и текст. Чаще всего с помощью HTTP передают веб-страницы, то есть контент сайтов, которые отображаются в интернете.

Протокол HTTP нужен для стандартизации. Благодаря ему все компьютеры в интернете могут расшифровать присланные данные и отправлять их в виде, понятном другим компьютерам.

Структура HTTP-сообщения всегда одинакова:

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

2. Заголовки (Headers), в которых прописаны определённые параметры сообщения. Например, может быть напрямую задан язык.

3. Тело запроса (Request Body), текст сообщения — данные, которые передаются. Например, файлы, отправляемые на сервер.

Так выглядит HTTP-запрос. В нём клиент запрашивает информацию с сайта example.com. В заголовках содержится браузер клиента, язык запроса, кодировка и некоторые другие параметры. Тела у запроса нет, так как он не передаёт никакие данные

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

У HTTP есть расширение — протокол HTTPS. Буква S в аббревиатуре означает Secure, то есть «защищённый». Он организует передачу данных более безопасно, так как сообщение перед отправкой шифруется по специальным правилам. Сейчас практически все сайты работают именно на HTTPS, однако в его основе лежат всё те же базовые правила HTTP.

Материал по теме:
Сайты делают не только программисты: кто такие верстальщики, зачем нужны и что умеют

Основные методы HTTP

В заголовках HTTP-сообщений используются методы — по ним сервер и клиент понимают, в чём именно суть сообщения. Разберём пять самых популярных методов.
Существуют и другие методы, однако они используются гораздо реже. Например, OPTIONS возвращает описание ресурса — методы, настройки кэширования, тип контента.

Преимущества и недостатки HTTP

Преимущества

Расширяемость. В 1992, когда HTTP только появился, он был совсем простым. Но со временем протокол передачи гипертекста обрастал новыми методами и возможностями, и он всё ещё способен к расширению и изменению.

Подробная документация. HTTP подробно описан на разных языках, и в документации есть ответы на большинство вопросов.

Распространённость. HTTP — самый популярный протокол в интернете. Он считается основным и универсальным, на нём работают практически все сайты в мире.

Недостатки

Отсутствие навигации. HTTP не позволяет запросить все доступные ресурсы и их параметры. Это исправили расширением WebDAV, но в самом HTTP такая возможность не предусмотрена.

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

Незащищённость. Базовый HTTP без шифрования совершенно небезопасен — любой может перехватить данные запроса и узнать всё: логины, пароли, данные банковских карт. Поэтому и появился HTTPS.

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

Чем можно управлять через протокол HTTP

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

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

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

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

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

Клиент всегда инициирует общение, отправляя запрос. А сервер, в свою очередь, как-то на это реагирует

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

Сама работа HTTP-протокола максимально проста — клиент передаёт запрос, сервер формирует ответ и передаёт его обратно. До отправки запроса и после получения ответа происходят фоновые задачи, незаметные для пользователя. Поэтому, чтобы понять, как работает протокол HTTP, рассмотрим этот процесс целиком:

1. Формирование URL или переход по введённой ссылке в браузере клиента. Это то, что видно в адресной строке: например, https://practicum.yandex.ru/. Здесь как раз используется протокол HTTPS. Браузер анализирует URL и понимает, что по этому адресу нужно отправить HTTP-запрос.

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

2. Клиент формирует и отправляет запрос. Для этого генерируется стартовая строка, заголовки и тело запроса в зависимости от того, что именно будет запрошено у сервера. Это может быть как просто отображение страницы, так и какие-то действия, например обновление или удаление данных с сервера.

3. Запрос направляется напрямую на сервер либо через прокси. Движение запроса регулируется другими протоколами, которые управляют отправкой данных по сети. Обычно это TCP/IP. Они формируют пакеты данных из запросов по своим правилам.

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

5. Клиент получает ответ и отображает результат. Обычно для этого он расшифровывает полученные данные в HTML и отображает их в браузере в виде веб-страницы.

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

Совет эксперта

Николай Федосеев
Практически ни одно приложение или устройство не обходится без использования интернета или сетевых технологий. Если разобраться в «магии» перемещения пакетов данных между двумя устройствами, то можно легко понять работу всего мирового интернета. Построение и работа сетей, а также особенности использования протоколов в них — фундаментальные знания, которые нужны каждому программисту. Разобраться в основах помогут книги «Компьютерные сети. Принципы, технологии» Олифера и «Компьютерные сети» Таненбаума.

Статью подготовили:

Николай Федосеев
Яндекс Практикум
Education Mentor,
SDE в PlayCanvas
Яндекс Практикум
Редактор

Дайджест блога: ежемесячная подборка лучших статей от редакции

Поделиться

Успейте начать учебу в Практикуме до конца ноября со скидкой 20%

Thu Oct 17 2024 18:13:38 GMT+0300 (Moscow Standard Time)