В ночных сборках Firefox, а также в бета-версии включена по умолчанию поддержка протокола HTTP/3. В стабильной ветке включение HTTP/3 намечено на выпуск Firefox 88, запланированный на 20 апреля. В Chrome выборочная активация HTTP/3 началась в октябре 2020 года.
Поддержка HTTP/3 в Firefox основана на развиваемом компанией Mozilla проекте neqo, предоставляющем реализацию клиента и serverilt для протокола QUIC. Код компонентов для поддержки HTTP/3 и QUIC написан на языке Rust. Для управления включением HTTP/3 в about:config предусмотрена опция «network.http.http3.enabled». Из клиентского ПО экспериментальная поддержка HTTP/3 также уже добавлена в Chrome и curl, а для serverid доступна в nginx, а также в форме nginx-модуля и тестового сервера от компании Cloudflare. Для проверки работы клиентов HTTP/3 запущено несколько тестовых сайтов.
Протокол HTTP/3 пока находится на стадии черновой спецификации и окончательно не стандартизирован в IETF. HTTP/3 определяет использование протокола QUIC в качестве транспорта для HTTP/2. Протокол QUIC (Quick UDP Internet Connections) c 2013 года развивается компанией Google в качестве альтернативы связке TCP+TLS для Web, решающей проблемы с большим временем установки и согласования соединений в TCP и устраняющей задержки при потере пакетов в процессе передачи данных. QUIC представляет собой надстройку над протоколом UDP, поддерживающую мультиплексирование нескольких соединений и обеспечивающую методы шифрования, эквивалентные TLS/SSL. В процессе разработки в IETF стандарта в протокол были внесены изменения, что привело к возникновению двух параллельно существующих веток, одна для HTTP/3, а вторая поддерживаемая Google (Chrome поддерживает оба варианта).
QUICi põhijooned:
- Kõrge turvalisus, võrreldav TLS'iga (QUIC pakub tegelikult võimalust kasutada TLS'i UDP peal);
- Voolu terviklikkuse jälgimine, mis takistab pakettide kaotust;
- Võime koheselt ühendust luua (0-RTT, umbes 75% juhtudest saab andmeid edastada kohe pärast ühenduse loomise paketi saatmist) ja tagada minimaalne viivitus küsimise ja vastuse saamise vahel (RTT, Round Trip Time);
- Paketi uuesti edastamisel kasutatakse teistsugust järjestuse numbrit, mis võimaldab vältida mitmeti mõistetavust saadud pakettide määratlemisel ja kõrvaldada aegumise probleemid;
- Paketi kaotus mõjutab ainult selle kaasnevat voolu ja ei peata andmete edastamist samaaegselt praeguse ühenduse kaudu edastatavatest voogudest;
- Vigade parandusmeetmed, mis minimeerivad viivitusi kadunud pakettide uuesti edastamise tõttu. Eriliste vigade parandamise koodide kasutamine paketi tasemel, et vähendada olukordi, mis nõuavad kadunud paketi andmete uuesti edastamist.
- Krüptograafiliste plokkide piirid on joondatud QUIC pakettide piiridega, mis vähendab pakettide kaotuse mõju järgmiste pakettide sisu dekodeerimisele;
- TCP järjekorra ummistumise probleemide puudumine;
- Ühenduse identifikaatori tugi, mis võimaldab vähendada mobiilsete klientide uuesti ühendamise aega;
- Võime ühendada laienevaid ühenduse ülekande kontrolli mehhanisme;
- Igas suunas läbilaskevõime ennustamise tehnika kasutamine, et tagada pakkide edastamise optimaalne intensiivsus, vältides üleminekuid koormuse seisundisse, kus esineb pakettide kaotust;
- Заметный прирост производительности и пропускной способности, по сравнению с TCP. Для видеосервисов, таких как YouTube, применение QUIC показало сокращение операций повторной буферизации при просмотре видео на 30%.
Allikas: opennet.ru
