<h6>HTTP/0.9, HTTP/1.0, HTTP/1.1</h6>
Здесь мы обсуждаем версии HTTP/0.9, HTTP/1.0, HTTP/1.1, а также затрагиваем вопросы HTTP/2.

В HTTP/0.9 все запросы были однострочными, например, такими;

```
GET /index.html
```

В HTTP/1.0 появились заголовки запроса и ответа, в частности, заголовок `Content-Type`.

Упоминается сайт [Хабр](https://habr.com/ru/feed/).

HTTP/1.1 поддерживает повторное использование соединения, то есть соединение не обрубается после выполнения первого HTTP-запроса:

```
nc google.com 80
HEAD / HTTP/1.1
```

В то же соединение можно после первого запроса отправить второй запрос:

```
HEAD /wowwow HTTP/1.1
```

Для выхода жмём `CTRL`+`C`.

Также в HTTP/1.1 появился обязательный заголовок `HOST`:

```
nc app.salesbeat.pro 80
HEAD / HTTP/1.1

# ответ статусом 400, тк запрос без заголовка HOST

HEAD / HTTP/1.1
HOST: app.salesbeat.pro

# ответ статусом 301 на https://app.salesbeat.pro, запрос уже корректный

HEAD / HTTP/1.1
HOST: course.to.digital

# ответ статусом 301 на https://course.to.digital
# хотя домен, «к которому подключались» был app.salesbeat.pro.
# Подключение идёт по IP сервера, домен здесь только для выяснения IP
```
<h6>Проблемы HTTP 1.1</h6>
Для получения страницы браузеру необходимо отправить большое количество запросов. Отправка каждого запроса занимает определенное время. Для ускорения получения данных браузер может использовать до 6 соединений, чтобы получать данные параллельно. Но это решение не является оптимальным. 
Так же для сокращения количества запросов некоторые данные, к примеру картинки, могут передаваться в одном запросе.
Сохраняется проблема большого количества одинаковых заголовков в запросах.
<h6>HTTP 2</h6>
Данные передаются в бинарном формате. Реализовано сжатие HTTP заголовков. Контент бьется на части и передается одним потоком. Браузер может установить приоритет для некоторых данных, чтобы сервер отдавал их в первую очередь.
<h6>HTTP 3</h6>
Работает поверх UDP, использую протокол QUIC

