Найти тему
HowToSchool

SD-EP40: Какие версии протокола HTTP вы знаете?

HTTP 1.0 – был заявлен 1995 году, а доработан и полностью задокументирован в 1996 году. Каждый запрос к одному и тому же серверу требует отдельного TCP-соединения.

HTTP 1.1 – был опубликован в 1999 году. TCP-соединение можно оставить открытым для повторного использования (постоянное соединение), но это не решает проблему блокировки HOL (head-of-line).

Блокировка HOL — это, когда количество разрешенных параллельных запросов в браузере израсходовано, последующие запросы должны ждать завершения предыдущих.

HTTP 2.0 – был опубликован в 2015 году. Данная версия решает проблему HOL за счет мультиплексирования запросов, что устраняет блокировку HOL на уровне приложений, но HOL по-прежнему существует на транспортном (TCP) уровне.

Как вы можете видеть на схеме, в HTTP 2.0 появилась концепция «потоков» («streams») HTTP: абстракция, позволяющая мультиплексировать различные HTTP-обмены в одно и то же TCP-соединение. Каждый поток не обязательно отправляется по порядку.

HTTP 3.0 – Первый проект был опубликован в 2019 году. Данная версия использует QUIC вместо TCP в качестве базового транспортного протокола, тем самым устраняя блокировку HOL на транспортном уровне.

QUIC основан на UDP. Потоки QUIC используют одно и то же соединение QUIC, поэтому для создания новых не требуются дополнительные «рукопожатия», что положительно влияет на скорость.

P.S. А вы задавались вопросом какой версией протокола HTTP вы пользуетесь сейчас?