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

Что такое протокол HTTP

Что такое протокол HTTP

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

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

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

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

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

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

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

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

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

Преимущества и недостатки 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 и отображает их в браузере в виде веб-страницы.

Запись опубликована в рубрике Уроки ucoz. Добавьте в закладки постоянную ссылку.