HTTP — это протоколпередачи гипертекстовых данных. Когда вы вводите адрес сайта в браузере и на экране открывается веб-страница, вы используете эту технологию. За кадром остается код запроса и ответа. Рассказываем принцип работы HTTP простыми словами, как в учебнике информатики.
HTTP — что это такое
Аббревиатура HTTP расшифровывается как HyperText Transfer Protocol. В переводе расшифровка означает «протокол передачи гипертекста». Это технология, за счет которой работает интернет. Она обеспечивает передачу данных между браузером и сервером.
Протокол HTTP работает с гипертекстовыми данными. Это документы, связанные сетью ссылок с другими файлами. Гиперсвязи могут находиться внутри документа или вести на него из внешнего источника. Гипертекстовые данные могут описывать тексты, картинки, видео и аудио. Но сам файл содержит только текст.
Сетевой протокол разработан в 1992 году. Актуальная версия HTTP 1.1 описана в спецификации RFC 2616. Это список правил, который описывает структуру HTTP запроса и ответа
Источник: ru.freepik.com
Зачем используют HTTP
Обмен данными
Просмотр веб-страниц в интернете возможен благодаря HTTP. Сетевой протокол обеспечивает взаимодействие браузера и сервера. Передача данных выполняется через TCP/IP-соединение. На стороне сервера по умолчанию используется TCP-порт 80, но возможны и другие варианты.
Компоненты сетевого протокола:
- Клиент. Отправляет запросы для доступа к веб-страницам и обрабатывает ответы. В роли клиента может выступать браузер или веб-приложение.
- Сервер. Получает запросы от клиента, обрабатывает их и отправляет ответы. В этой роли может выступать один компьютер, кластер машин или виртуальный сервер.
- Прокси-серверы. Находятся на маршруте между клиентом и главным сервером. Передают запросы и ответы дальше по цепочке. Прокси-серверы используют для перераспределения нагрузки, сжатия файлов или шифрования данных.
Интеграция
HTTP поддерживает интеграцию с другими протоколами. Например, SOAP, XML-RPC и WebDAV. В спецификации 1.1 для смены протокола используется заголовок Upgrade. Клиент должен создать запрос с таким заголовком. Сервер не может изменить протокол самостоятельно. Когда возникает необходимость, он передает ответ 426 Upgrade Required.
Многие программы и веб-приложения поддерживают обмен данными с помощью HTTP через API. Так можно передавать любой формат файлов, в том числе JSON и XML.
Шифрование
В базовой версии нет инструмента шифрования. Для защиты данных используется расширение HTTPS. Расшифровка названия: HyperText Transfer Protocol Secure или «безопасный протокол передачи гипертекста». Большинство сайтов используют HTTPS.
HTTPS преобразует данные, используя криптографический протокол TLS или SSL. Пользователи могут передавать логины и пароли, телефоны и адреса email, реквизиты банковских карт и другую личную информацию. Данные надежно защищены от перехвата или подмены.
При HTTPS-соединении на сервере используется TCP-порт 443. Он расшифровывает запросы на основе приватного ключа.
Как происходит обмен данными:
- Браузер запрашивает SSL-сертификат у сайта.
- Сайт отправляет клиенту SSL-сертификат в ответ.
- Браузер проверяет информацию в центре сертификации.
- Если сертификат подлинный, передача данных продолжается. Если обнаружена ошибка, пользователь получает уведомление, что соединение не безопасно.
- Используя асимметричный ключ, браузер и сайт договариваются о симметричном ключе.
- Клиент и сервер обмениваются зашифрованной информацией.
Как отправить запрос
- Открыть браузер и ввести адрес в командную строку. Например: synergy.ru. Для доступа к сайту не нужно указывать протокол. Он добавляется в стартовую строку автоматически.
- Браузер отправляет URL в доменную систему имен (DNS). Система находит IP-адрес сайта в базе данных и передает его клиенту.
- Клиент составляет запрос с вложенным IP-адресом и передает его на сайт.
- Сервер обрабатывает и генерирует ответ. В нем содержатся не только запрошенные данные (HTML-код главной страницы сайта). Ответ включает метаданные: дополнительную информацию, которая помогает упорядочить файлы.
- Браузер получает ответ и показывает главную страницу сайта.
Запрос выглядит так:
GET / HTTP/1.1
host: www.synergy.ru.
Расшифровка структуры:
- GET — метод. Описывает действие, которое должен выполнить сервер. В нашем примере: отправить код HTML-страницы клиенту.
- / — унифицированный идентификатор ресурса (URI). Он состоит из адреса хоста (URL) и адреса страницы (URN), которые нужно указывать далее в тексте.
- HTTP/1.1 — версия сетевого протокола. Вариант 1.1 ставится по умолчанию. Если указать неправильную версию, могут возникать ошибки при чтении данных.
- host: www.synergy.ru — адрес хоста. URL автоматически меняется на IP-адрес сайта. URN в примере не указывается, потому что обращение идет к главной странице.
Ответ сервера выглядит так:
HTTP/1.1 200 OK
Content-Type: text/html; charset=UTF-8
Content-Length: число
<html> здесь код страницы </html>
Расшифровка структуры:
- HTTP/1.1 — версия сетевого протокола.
- 200 OK — статус ответа. Статус означает, что запрос обработан успешно.
- Content-Type — заголовок, который показывает формат и параметры файла.
- Content-Length — заголовок, который сообщает размер файла в байтах.
- <html> код </html> — тело ответа.
Источник: ru.freepik.com
Типичные ошибки и как их исправить
- 300 Moved Permanently — адрес хоста (URL) навсегда изменился. Уточните новый адрес страницы.
- 400 Bad Request — неправильный формат запроса. Убедитесь, что вы используете версию 1.1. Отключите плагины для браузера. Проблема может быть на стороне провайдера или сервера.
- 401 Unauthorized — ошибка авторизации. Для доступа к сайту правильно укажите логин и пароль.
- 404 Not Found — страница не найдена. Ошибка при вводе URL или указан адрес, которого не существует. Уточните адрес сайта и проверьте URL.
- 403 Forbidden — доступ запрещен.
- 405 Method Not Allowed — указанный в запросе метод не поддерживается. Попробуйте выполнить другое действие
- 409 Conflict — конфликт в запросе. Проверьте версию протокола. Если запрос введен вручную, проверьте написанный код.
- 500 Internal Server Error — внутренняя ошибка сервера. Попробуйте зайти на сайт позже.
- 503 Forbidden — служба недоступна. Сервер перегружен или ведутся технические работы. Вернитесь на сайт позже.
Главное, что нужно знать
- HTTP — это протокол, который описывает правила обмена данными между компьютером и сервером. Он позволяет работать с сайтами, просматривать картинки и видео, скачивать и загружать файлы.
- HTTP работает в браузерах или веб-приложениях. Он поддерживает интеграцию с другими сетевыми протоколами (WebSocket, SOAP, XML-RPC и WebDAV).
- Обмен данными начинается по инициативе клиента. Браузер отправляет HTTP-запрос на сайт. Сервер обрабатывает его и генерирует ответ. Браузер принимает его и показывает веб-страницу пользователю.
- Чтобы передавать данные в зашифрованном виде, используется расширение HTTPS. Для проверки безопасности соединения используются SSL-сертификаты.