49 lines
4.5 KiB
Markdown
49 lines
4.5 KiB
Markdown
|
---
|
|||
|
aliases:
|
|||
|
- HTTP 1.1
|
|||
|
- HTTP 1.0
|
|||
|
- HTTP/1.1
|
|||
|
tags:
|
|||
|
- maturity/🌱
|
|||
|
date: 2024-11-27
|
|||
|
---
|
|||
|
С развитием интернета протокол [[HyperText Transfer Protocol|HTTP]] прошёл значительные изменения. Первой полноценной версией стал **HTTP/1.0**, завершённый в 1996 году.
|
|||
|
|
|||
|
Однако его ключевая особенность — необходимость устанавливать отдельное [[../../../../knowledge/dev/network/TCP|TCP]]-соединение для каждого запроса — привела к существенным проблемам. ==Каждый новый запрос требовал затратного трёхфазного рукопожатия, что значительно увеличивало задержки и создавало дополнительную нагрузку на серверы==. Это особенно сказывалось на страницах, содержащих множество ресурсов, таких как изображения и скрипты.
|
|||
|
|
|||
|
Ответом на эти ограничения стал **HTTP/1.1**, опубликованный уже в 1997 году. Он внедрил концепцию постоянных соединений: ==теперь одно [[../../../../knowledge/dev/network/TCP|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|URI]], а также обязательные стартовую строку и заголовки. В запросе стартовая строка определяет метод (например, GET или POST) и [[Uniform Resource Identifier|URI]] ресурса, а заголовки предоставляют дополнительную информацию о запросе, такой как тип передаваемого контента или параметры кеширования.
|
|||
|
|
|||
|
Пример стандартного запроса HTTP/1.1 выглядит следующим образом:
|
|||
|
|
|||
|
```http
|
|||
|
GET /about.html HTTP/1.1
|
|||
|
Host: example.com
|
|||
|
Connection: keep-alive
|
|||
|
User-Agent: Mozilla/5.0
|
|||
|
Accept: text/html
|
|||
|
```
|
|||
|
|
|||
|
***
|
|||
|
## Мета информация
|
|||
|
**Область**:: [[../../meta/zero/00 Сети|00 Сети]]
|
|||
|
**Родитель**:: [[HyperText Transfer Protocol|HyperText Transfer Protocol]]
|
|||
|
**Источник**::
|
|||
|
**Создана**:: [[2024-11-27]]
|
|||
|
**Автор**::
|
|||
|
### Дополнительные материалы
|
|||
|
-
|
|||
|
|
|||
|
### Дочерние заметки
|
|||
|
<!-- QueryToSerialize: LIST FROM [[]] WHERE contains(Родитель, this.file.link) or contains(parents, this.file.link) -->
|
|||
|
|