Специальное предложение:Сделайте рывок в карьере фронтендера всего за 3 месяца!

-15%
Подробнее
Result University

Что такое HTTP?

В этой статье

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

Открыть Roadmap

Основы HTTP

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

Что такое HTTP?

HTTP — это основа Всемирной паутины. Дословно, HTTP расшифровывается как Hypertext Transfer Protocol, или «протокол передачи гипертекста». Проще говоря, HTTP — это набор правил для пересылки текста, изображений и других данных между вашим браузером и сервером, на котором находится веб-страница.

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

HTTP: основные понятия

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

Протокол — набор правил и стандартов для обмена данными между компьютерными программами.

TCP/IP (Transmission Control Protocol/Internet Protocol) — основной стек протоколов, на котором строится интернет, включая подпротокол TCP, обеспечивающий доставку данных и IP, который направляет пакеты данных.

Сервер — компьютер или программа, которая предоставляет данные другим компьютерам по сети.

Клиент — компьютер или программа, которая запрашивает данные у сервера. В контексте HTTP, веб-браузеры являются клиентами.

Соединение — процесс установления канала связи между клиентом и сервером.

Запрос — сообщение от клиента к серверу, с просьбой о предоставлении ресурса, например веб-страницы.

Ответ — сообщение от сервера к клиенту, содержащее запрашиваемый ресурс или информацию о статусе запроса.

Методы запроса — действия, которые клиент может предпринять для взаимодействия с ресурсами на сервере, например GET, POST, PUT, DELETE.

Статус-коды — числовые значения, которые сервер использует, чтобы сообщить клиенту о результате обработки запроса, например 200 для успешного запроса или 404, если страница не найдена.

Заголовки — параментры в запросе и ответе, передающие информацию о типе содержимого, кодировке, методах кэширования и других характеристиках трансляции.

Тело сообщения — часть запроса или ответа, содержащая фактические передаваемые данные, такие как HTML, CSS и изображения для веб-страницы.

Кэширование — процесс хранения копий данных для быстрого доступа.

Сессия — серия последовательных запросов и ответов между клиентом и сервером, которые вместе составляют одно взаимодействие.

Куки (сookies) — небольшие данные, которые сервер может сохранить на клиентском компьютере для отслеживания сессий и предпочтений пользователя.

HTTPS (HTTP Secure) — расширение протокола HTTP с добавлением слоя безопасности через шифрование данных.

Немного об истории HTTP

Первая задокументированная версия HTTP — HTTP/0.9 — была представлена в 1991 году. Это был примитивный протокол с единственным методомп GET. Таким образом, если клиенту нужно было получить доступ к какой-либо веб-странице на сервере, он делал простой запрос, например:

GET /index.html

В свою очередь ответ от сервера выглядел следующим образом:

(response body)
(connection closed)

Однако HTTP/0.9 был лишь наброском того, что мир увидел в будущем в контексте темы HTTP. Через 5 лет, в 1996 году появилась следующая версия — HTTP/1.0. По всем параметрам она превосходила предыдущую версию HTTP и могла работать не только с HTML-кодом, но и с другими форматами данных: изображениями, видео, текстом и вообще любым видом информации.

Теперь типичный запрос на HTTP/1.0 выглядел примерно так:

GET / HTTP/1.0
Host: cs.fyi
User-Agent: Mozilla/5.0 (Macintosh; Intel Mac OS X 10_10_5)
Accept: */*

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

Пример ответа на запрос, приведенный выше, мог выглядеть следующим образом:

HTTP/1.0 200 OK 
Content-Type: text/plain
Content-Length: 137582
Expires: Thu, 05 Dec 1997 16:00:00 GMT
Last-Modified: Wed, 5 August 1996 15:55:28 GMT
Server: Apache 0.84(response body)(connection closed)

Интересный факт. Несмотря на то, что новая версия HTTP могла передавать любой вид информации (изображения, текст, HTML-код), в истории интернета все равно сохранилась расшифровка этой аббревиатуры как «протокол передачи гипертекста».

Появление новой версии HTTP/1.1 в 1997 году позволило поддерживать постоянные соединения (keep-alive) и использовать одно TCP-соединение для нескольких запросов/ответов, повышая тем самым скорость загрузки. Также появились механизмы кэширования для более быстрого доступа к часто запрашиваемым данным, то есть протокол научился запоминать, на какие веб-страницы пользователь уже заходил.

Последняя версия HTTP/2 появилась в 2015 — она используется и до сих пор. Основной ее особенностью стала возможность отправлять несколько запросов параллельно в рамках одного соединения (мультиплексирование). Как результат, веб-страницы стали загружаться еще быстрее.

Однако технологии передачи данных в интернете продолжают развиваться. Сейчас разрабатывается большое обновление (HTTP/3), которое сделает интернет еще быстрее и надежнее благодаря протоколу QUIC.

Cтатус-коды HTTP

Не все запросы ведут к успеху. Иногда вы можете столкнуться с сообщениями типа 404 Not Found или 500 Internal Server Error. Это HTTP статус-коды — сигналы от сервера о результате вашего запроса. Они помогают понять, что именно пошло не так. Давайте подробнее разберемся, что значат различные статус-коды.

Информационные:

100 Continue – сервер получил начальную часть запроса и предлагает клиенту продолжить его отправку.

101 Switching Protocols – клиент просит сервер переключиться на другой протокол и сервер согласился.

Успешные:

200 OK – стандартный ответ для успешных запросов.

201 Created – запрос успешно выполнен, и в результате был создан новый ресурс.

202 Accepted – запрос принят в обработку, но она еще не завершена.

204 No Content – сервер успешно обработал запрос, но тело сообщения отправлять не нужно.

Перенаправления:

301 Moved Permanently – запрашиваемый ресурс был окончательно перенесен на новый URL.

302 Found – запрашиваемый ресурс временно находится по другому URL.

304 Not Modified – ресурс не был изменен с момента последнего запроса (используется для кэширования).

Ошибки клиента:

400 Bad Request – сервер не понимает запрос из-за неверного синтаксиса.

401 Unauthorized – для доступа к запрашиваемому ресурсу нужна аутентификация.

403 Forbidden – сервер понял запрос, но отказывается его выполнять (недостаточно прав).

404 Not Found – сервер не может найти запрашиваемый ресурс.

429 Too Many Requests – клиент отправил слишком много запросов за короткий промежуток времени.

Ошибки сервера:

500 Internal Server Error – общая ошибка сервера, сервер встретил условие, которое не позволяет ему выполнить запрос.

501 Not Implemented – сервер не поддерживает функциональные возможности, требуемые для выполнения запроса.

502 Bad Gateway – сервер, выступающий в роли шлюза или прокси, получил неверный ответ от вышестоящего сервера.

503 Service Unavailable – сервер не готов обрабатывать запрос (например, из-за перегрузки или обслуживания).

504 Gateway Timeout – сервер в роли шлюза или прокси не дождался ответа от вышестоящего сервера для выполнения запроса.

Помимо этих статус-кодов существует множество других. Более подробный список можно найти на официальных ресурсах, например MDN.

Зачем разработчику понимать принципы HTTP?

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

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

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

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

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

Полезно для вас

Бесплатный курс по HTML и CSS

Следующая статья

Что такое доменное имя?

Доменное имя — это уникальный, легко запоминающийся адрес, который используется для доступа к сайтам, например, result-university.com.

Читать далее