Чем отличаются HTTP/1.1, HTTP/2 и HTTP/3
Вопрос
Чем отличаются HTTP/1.1, HTTP/2 и HTTP/3? Какие проблемы решала каждая версия?
Попробуйте сами
Ответьте вслух за 2 минуты, как на собесе. Потом сверьтесь с тезисами: что прозвучало, а что нет.
Показать ответ и разбор
Коротко
Что должно прозвучать в ответе
Семантика (методы, статусы, заголовки) одна, меняется транспорт
HTTP/1.1: запросы по очереди в соединении, браузер держит около 6 соединений
HTTP/2: бинарные фреймы, мультиплексирование, HPACK, одно соединение
HTTP/2 упирается в head-of-line blocking TCP при потерях
HTTP/3: QUIC поверх UDP, независимые потоки, TLS встроен, быстрее рукопожатие, миграция соединения
Что могут спросить следом
- Почему HTTP/3 не сделали поверх TCP?
- Что будет, если UDP заблокирован?
- Что изменилось в подходе к бандлингу с HTTP/2?
Разбор
Смысл HTTP во всех версиях одинаковый, отличается доставка. В HTTP/1.1 в одном соединении запросы выполняются по очереди, поэтому браузер открывает несколько соединений на хост, а разработчики склеивали файлы и шардили домены. HTTP/2 перешёл на бинарные фреймы и мультиплексирование: много потоков в одном TCP-соединении, плюс сжатие заголовков HPACK. Но при потере пакета TCP держит все потоки, пока не дождётся повтора, и на мобильных сетях это заметно. HTTP/3 работает на QUIC поверх UDP: потоки независимы, потеря тормозит только свой поток, TLS 1.3 встроен, так что новое соединение поднимается за один круг вместо двух, а при смене сети соединение переживает смену IP благодаря Connection ID. Если UDP режут, браузер откатывается на HTTP/2.
Ответьте сами, а не прочитайте
В тренажёре вопрос попадёт в повторения и вернётся, когда начнёт забываться. Плюс билеты с зачётом: 20 вопросов, не больше 2 ошибок.