TL;DR Какво е HTTP/3?

 

HTTP/3 е последната версия на HTTP протокола и позволява по-бързи, по-сигурни и по-надеждни връзки между уеб сървърите и уеб браузърите. По-конкретно промените са основно свързани при стартиране на връзките и при трансфера на множество файлове едновременно, така че зареждането на уеб сайтове е значително подобрена дори с бавна скоросто и нисък обхват на безжичната връзка. Очаква се да стане стандарт през следващите месеци.

 

Въведение

 

През последните месеци, кризата с Covid-19 принуди повечето от нас да работят от вкъщи и да се обучават онлайн. Тази промяна направи очевидна нуждата и зависимостта ни от Интернет и подчерта колко е важно да имаме добра скорост и надежден Интернет. От самото си начало, Интернет се разви изключително много и невероятно бързо и е очаквано този ръст да върви заедно с подобренията в технологиите, благодарение на които мрежите са изградени. Последната новост в протоколния стек е HTTP/3 и QUIC протоколите, които целят подобряване на начина, по който се осъществяват връзките с подобрения в сигурността и скоростта, както и ситуации, в които връзката е лоша (например ненадеждна безжична връзка, с която сега е почти невъзможно да се зареди сайт).

 

Историята на HTTP

 

HTTP е мрежови протокол от приложния слой за пренос на данни. Служи за комуникация между уеб сървърите и уеб браузърите. Работата по протокола е започната в CERN през 1989 година от Тим Бърнърс-Лий и от тогава е стандартния протокол за трансфер на данни в Мрежата (WWW). HTTP/1.1 е първата по-значима версия на протокола и е документирана през 1997 година, а първата голяма ревизия, HTTP/2, е въведена през 2015 година. В момента около 98% от уеб браузърите и около 48% от сайтовете поддържат HTTP/2, според компанията W3Techs. HTTP/3 (наричан до сега HTTP over QUIC) е следващата значима ревизия на протокола, която надгражда подобренията в  HTTP/2, и може да се използва без да нарушава поддръжката за HTTP/2. 

 

Малко предистория

 

Преди да задълбаем в фийчърите на HTTP/3 и QUIC протоколите, нека направим кратък обзор на предшественика. Основното подобрение в HTTP/2 е въвеждането на мултиплексиране, което позволява едновременно зареждане на ресурси в една TCP връзка. Другото е компресиране на TCP хедърите, което намалява размера на уеб заявките и въвежда сървър пуш, което позволява предварително доставяне на ресурси до посетителя преди тяхното поискване. Целта на всички тези промени е да се преудолеят ограниченията в TCP протокола, използван в HTTP/1.1. TCP е проектиран с многозадачен тип на връзката и това го прави много надежден. Изпращачът получава обратна връзка за всеки изпратен пакет и чексума, с която се установява дали данните са нарушени или корумпирани. За съжаление тази добавена надеждност направила протокола в основата на Интернет, има своята цена - доста overhead и съответно забавяне. Защо просто тогава не подобрим TCP протокола? Това изобщо не е толкова лесно, колкото звучи. TCP е създаден от самото начало на Интернет и е имплементиран на всички операционни системи и устройства, които се използват днес. Необходим е нов протокол, който не е свързан с TCP, тъй като ъпгрейда е неосъществим физически.

 

QUIC протоколът

 

QUIC протоколът е създаден през 2012 година от Гугъл. Той е построен на база на UDP протокола, който не притежава ограниченията на TCP. QUIC използва потоци споделящи една и съща връзка за трансфер на данни, което премахва нуждата от създаване на допълнителни връзки за мултиплексинг. Допълнително предимство на протокола е, че потоците се доставят независимо, така че при загуба на пакет в един поток не се афектират останалите. При HTTP2, ако пакет е загубен, то цялата връзка се задържа и минава в изчакване, докато пакета се изпрати наново.

QUIC също предоставя криптиране на връзката и автентикация по подразбиране, като комбинира “three-way handshake” с “TLS 1.3's handshake”. Това увеличава сигурността, но също подобрява и скоростта при създаване на връзката. Тъй като няколко QUIC потока използват една QUIC връзка, няма нужда от допълнителни ”handshakes” и бавна инициализация, която води до по-скорошно постигане на висока скорост. Това е възможно тъй като QUIC пакетите са част от UDP датаграмите. 

QUIC подсигурява правилния ред на доставените данни чрез ID на потоците в пакетния слой. Този ред се прилага в конкретен поток, но не е гарантиран измежду различни потоци. Компресирането на хедъра в HTTP/2 разчита на реда в TCP пакетите и съответно е неизползваем с QUIC. Това е една от причините QUIC да се нуждае от нова HTTP версия и не може просто да използва HTTP/2. И така, HTTP/3 идва с напълно нова схема за компресиране на хедъра - QPACK, която разрешава проблема. Друга причина за създаване на нова версия на HTTP е фактът, че някои от фийчърите на HTTP/2 са имплементирани в QUIC и няма нужда да са в основния протокол.

 

Кой печели най-много от HTTP/3?

 

Докато всички връзки ще се възползват от по-бързото първоначално осъществяване на връзката, има някои тип връзки, които драстично ще се подобрят от имплементирането на новия стандарт HTTP/3. Това са връзки с лоша производителност и макар те да не представляват голям процент от трафика, подобряването им би означавало разликата между неизползваем Интернет и добра скорост и използваемост. Има различни сценарии за причината - стара технология, физически ограничения, задръстване на мрежата и други. Когато има висок процент на загуба на пакети, има сериозни забавяния, заради TCP мултиплексинга, при който загуба на 1 пакет означава спиране на връзката и изчакване. Това е основния проблем, който HTTP/3 и QUIC разрешават и ето защо лоша връзка, като например нисък обхват на безжичен интернет, ще бъде значително по-използваема и бърза.

 

Кога се очаква HTTP/3 да се използва масово?

 

HTTP/3 се тества и използва вече повече от година и може да бъде включен от настройките в по-популярните браузъри Google Chrome и Mozilla Firefox. Също повечето уеб сървъри включиха поддръжка за протокола. Litespeed, изборът за уеб сървър за нашия споделен хостинг, е един от първите, които започнаха да поддържат HTTP/3. Cloudflare също го поддържат вече повече от година и обявиха съвсем наскоро, че ще го включат по подразбиране за всички сайтове през следващите седмици. Тъй като е съвместим със стари версии и е преминал сериозни тестове, HTTP/3 се счита, че е безопасен откъм проблеми и очакваме да стане стандарт през 2021 година.

 

Заключение

 

Въпреки, че HTTP/2 е все още млад, HTTP/3 е на път да бъде широко използван. Понеже е важен ъпгрейд, много компании лидери в областта правят всичко възможно да го направят стандарт в близко бъдеще. А това означава, че всички ще имаме по-бързо, сигурно и надеждно уеб преживяване.