HTTP-приложения #
Васильев Андрей Михайлович, 2024
Версии презентации
Интернет гипертекста #
В рамках концепции гипертекста доступ ко всем данным может быть осуществлён с помощью одного приложения, браузера, способного отображать документы и удобным образом переходить к другим документам в сети
- Веб-браузер является средством просмотра HTML-документов
 - HTML-документы содержат текст и ссылки на другие документы
 - Документы передаются с сервера на клиент с помощью протокола HTTP
 - Для доступа к данным пользователю достаточно знать доменное имя сервера
 
Базовые технологии интернета гипертекста
- Протокол обмена документами HTTP был утверждён в 1992 году
 - Язык разметки документов HTML был утверждён в 1993 году
 
Протокол HTTP #
Является протоколом прикладного уровня, решающий задачу передачи документов по общей сети удобным для пользователя образом
История создания #
- Версия 0.9 представлена в 1990-1992 годах
 - Версия 1.0 стандартизирована в 1996 году
 - Версия 1.1 стандартизирована в 1999 году
 - Версия 2 стандартизирована в 2015 году
 - Версия 3 стандартизирована в 2022 году
 
Новые версии обратно совместимы со старыми, добавляют новые возможности
Связанные сетевые технологии #
- Стек сетевых протоколов TCP / IP (1980-е)
- Транспортный протокол TCP
- Используется в протоколах HTTP 1.1 (1999), HTTP 2 (2015)
 
 - Транспортный протокол UDP
- Используется в протоколе HTTP 3 (2022)
 
 
 - Транспортный протокол TCP
 - Безопасность транспортного уровня TLS (1999, 1.3 — 2018)
- Является основой для защищённого варианта HTTP, HTTPS
 
 - Система доменных имён DNS (1983, 1987)
 - Доменные имена поверх HTTPS, DoH (2018)
 
Данные технологии детально не рассматриваются в курсе, но их знание является необходимым для эффективной разработки больших продуктовых систем
Архитектура HTTP #
В рамках протокола выделяются 2 роли: сервер и клиент
- Приложение-сервер работает постоянно и ожидает подключения от клиента
 - Клиент подключается к серверу и передаёт запрос на получение документа
 - Сервер возвращает запрошенный документ, если он существует
 - Сервер закрывает соединение после передачи документа
 
Особенности HTTP-приложений #
- HTTP-сервер работает постоянно, так как он не знает когда к нему планирует обратиться клиент
 - HTTP-сервер может одновременно обрабатывать запросы от множества клиентов
 - Клиент может послать очередной запрос с любой задержкой: 10мс, 2000мс и т.д.
 - В последних версиях протокола HTTP сервер может инициировать отправку данных на сторону клиента
 
HTTP-приложения являются распределёнными приложениями, в которых как сервер, так и клиент должен поддерживать совместное актуальное состояние
Роли участников в HTTP-взаимодействии #
Между клиентом и сервером может находится несколько проксирующих серверов
- Задача прокси-серверов, находящихся рядом с клиентом состоит в уменьшении объёма запрашиваемых данных (в кешировании):
- запросы могут быть одинаковыми у разных клиентов
 - один клиент может инициировать запросы к одному ресурсу
 
 - В современны браузерах встроен агрессивный кеширующий сервер
 - Задачи прокси-сервера, находящегося рядом с серверами, состоит в балансировке нагрузки между серверами
- По географическому положению клиента
 - По степени нагруженности серверов
 - В зависимости от клиента
 
 
Современные HTTP-приложения #
В конце 2000х годов стало технически возможно выполнять большое количество кода на стороне веб-браузера за относительно разумное время
- Веб-браузеру необходимо скачать JavaScript или WebAssembly-код приложения
 - Веб-приложение может оперативно изменять DOM-модель отображаемого HTML-документа
 - Веб-приложение запрашивает новые данные посредством AJAX (Asynchronous JavaScript and XML), данные передаются обычно в формате JSON
 
HTTP-сервисы #
- Запущенному веб-приложению в рамках веб-браузера не обязательно обращаться к серверу, с которого оно было загружено
 - Клиентами HTTP-серверов являются не только веб-приложения, запущенные в веб-браузере
 - Для решения множества задач разработки серверных приложений они разделяются на компоненты, которые общаются между собой по HTTP