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

Однако его ключевая особенность — необходимость устанавливать отдельное TCP-соединение для каждого запроса — привела к существенным проблемам. Каждый новый запрос требовал затратного трёхфазного рукопожатия, что значительно увеличивало задержки и создавало дополнительную нагрузку на серверы. Это особенно сказывалось на страницах, содержащих множество ресурсов, таких как изображения и скрипты.

Ответом на эти ограничения стал HTTP/1.1, опубликованный уже в 1997 году. Он внедрил концепцию постоянных соединений: ==теперь одно TCP-соединение можно было оставить открытым и использовать повторно для нескольких запросов==. Это улучшение позволило сократить задержки и снизить нагрузку на серверы, так как устранить необходимость постоянного открытия новых соединений.

Важной чертой HTTP/1.1 стал обязательный заголовок Host. Он позволяет одному серверу обслуживать сразу несколько доменов, что сделало возможным использование виртуального хостинга.

Кроме того, HTTP/1.1 добавил поддержку частичных запросов, что стало полезным для докачки файлов или загрузки больших ресурсов по частям с помощью заголовка Range.

Несмотря на эти улучшения, HTTP/1.1 не смог решить проблему блокировки первой строки (Head-of-Line, HOL). Эта ситуация возникает, когда ограничение на количество одновременных запросов исчерпывается, и последующие запросы вынуждены ждать завершения предыдущих. В результате сайты с большим количеством ресурсов всё ещё загружаются медленно, даже при использовании постоянных соединений.

Структурно HTTP/1.1 сохранил идентификацию ресурсов через URI, а также обязательные стартовую строку и заголовки. В запросе стартовая строка определяет метод (например, GET или POST) и URI ресурса, а заголовки предоставляют дополнительную информацию о запросе, такой как тип передаваемого контента или параметры кеширования.

Пример стандартного запроса HTTP/1.1 выглядит следующим образом:

GET /about.html HTTP/1.1
Host: example.com
Connection: keep-alive
User-Agent: Mozilla/5.0
Accept: text/html

Мета информация

Область:: 00 Сети
Родитель:: HyperText Transfer Protocol
Источник::
Создана:: 2024-11-27
Автор::

Дополнительные материалы

Дочерние заметки