digital-garden/dev/network/HTTP 1.md
Struchkov Mark d0a4acf39c
All checks were successful
continuous-integration/drone/push Build is passing
Обновление
2024-11-27 22:08:08 +03:00

4.5 KiB
Raw Blame History

aliases tags date
HTTP 1.1
HTTP 1.0
HTTP/1.1
maturity/🌱
2024-11-27

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

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

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

!../../meta/files/images/Pasted image 20241127084201.png

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

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

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

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

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

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

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

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

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

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