В нощните версии на Firefox, както и в бета версията, по подразбиране е включена поддръжка на протокола HTTP/3. В стабилната версия включването на HTTP/3 е планирано за версия Firefox 88, която е насрочена за 20 април.
Поддръжката на HTTP/3 в Firefox е базирана на проекта neqo, разработван от компания Mozilla, предоставящ клиентска реализация и сървър за протокола QUIC. Кодът на компонентите за поддръжка на HTTP/3 и QUIC е написан на езика Rust. За управление на включването на HTTP/3 в about:config е предвидена опция „network.http.http3.enabled“. В клиентския софтуер експерименталната поддръжка на HTTP/3 вече е добавена и в Chrome и curl, а за сървъри е налична в nginx, както и под формата на nginx модул и тестови сървър от компания Cloudflare. За проверка на работата на клиентите на HTTP/3 са стартирани няколко тестови сайта.
Протоколът HTTP/3 все още е в чернова спецификация и окончателно не е стандартизиран в IETF. HTTP/3 определя използването на протокола QUIC като транспорт за HTTP/2. Протоколът QUIC (Quick UDP Internet Connections) се развива от 2013 година от компания Google като алтернатива на TCP+TLS за уеб, решаваща проблемите с дългото време за установяване и уговаряне на връзки в TCP и премахваща забавянията при загуба на пакети по време на трансфер на данни. QUIC представлява надстройка над протокола UDP, поддържаща мултиплексиране на множество връзки и осигуряваща методи за криптиране, еквивалентни на TLS/SSL. По време на разработката в IETF на стандарта в протокола бяха направени промени, което доведе до появата на две паралелно съществуващи клони, един за HTTP/3 и друг, поддържан от Google (Chrome поддържа и двата варианта).
Основни характеристики на QUIC:
- Висока сигурност, подобна на TLS (по същество QUIC предоставя възможност за използване на TLS над UDP);
- Контрол за целостта на потока, предотвратяващ загуба на пакети;
- Възможност за незабавно установяване на връзка (0-RTT, в около 75% от случаите данните могат да се предават веднага след изпращането на пакета за установяване на връзката) и осигуряване на минимални забавяния между изпращането на запитването и получаването на отговора (RTT, Round Trip Time);
- Използването на друг номер на последователност за повторно предаване на пакета, което позволява да се избегне двусмисленост при определяне на получените пакети и да се премахнат тайм-аутите;
- Загубата на пакет влияе само на доставката на свързания с него поток и не спира доставката на данни в паралелно предавани през текущото съединение потоци;
- Средства за корекция на грешки, минимизиращи забавянията поради повторно предаване на изгубени пакети. Използване на специални кодове за корекция на грешки на ниво пакет, за да се намалят ситуациите, изискващи повторно предаване на данни от изгубения пакет.
- Границите на криптографските блокове са подравнени с границите на QUIC пакетите, което намалява влиянието на загубите на пакети върху декодирането на съдържанието на следващите пакети;
- Липса на проблеми с блокиране на опашката TCP;
- Поддръжка на идентификатор на съединение, позволяваща да се съкрати времето за установяване на повторно съединение за мобилни клиенти;
- Възможност за свързване на разширени механизми за контрол на претоварването на съединението;
- Използване на техника за прогнозиране на пропускната способност във всяка посока за осигуряване на оптимална интензивност на изпращане на пакети, предотвратявайки свличането в състояние на претоварване, при което се наблюдава загуба на пакети;
- Забележимо увеличение на производителността и пропускната способност в сравнение с TCP. За видеосервизите, като YouTube, прилагането на QUIC показа 30% намаление на операциите за повторно буферизиране при гледане на видео.
Източник: opennet.ru
