4.5 KiB
aliases | tags | date | ||||
---|---|---|---|---|---|---|
|
|
2024-11-27 |
С развитием интернета протокол HyperText Transfer Protocol прошёл значительные изменения. Первой полноценной версией стал HTTP/1.0, завершённый в 1996 году.
Однако его ключевая особенность — необходимость устанавливать отдельное ../../../../knowledge/dev/network/TCP-соединение для каждого запроса — привела к существенным проблемам. ==Каждый новый запрос требовал затратного трёхфазного рукопожатия, что значительно увеличивало задержки и создавало дополнительную нагрузку на серверы==. Это особенно сказывалось на страницах, содержащих множество ресурсов, таких как изображения и скрипты.
Ответом на эти ограничения стал HTTP/1.1, опубликованный уже в 1997 году. Он внедрил концепцию постоянных соединений: ==теперь одно ../../../../knowledge/dev/network/TCP-соединение можно было оставить открытым и использовать повторно для нескольких запросов==. Это улучшение позволило сократить задержки и снизить нагрузку на серверы, так как устранить необходимость постоянного открытия новых соединений.
Важной чертой 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 Автор::