Въведение в HTTP / 2

Въведение

HTTP / 2 е последната версия на Протокол за прехвърляне на HyperText или HTTP [01], която се използва от браузърите за комуникация с уеб сървъри. Произведено от по-старото SPDY [02] протокол, HTTP / 2 е първата нова версия на HTTP от стандартизацията на HTTP / 1.1 в RFC 2068 през 1997 г.

Тя е разработена от HTTP работната група на Internet Engineering Task Force (IETF) httpbis (където „бис“ означава „два пъти“) и публикувано като RFC 7540 [03] Май 2015.

HTTP / 2 приемане

HTTP / 2 все по-често се приема от работещи уебсайтове от официалното му публикуване. Онлайн услугата за проучване W3Techs [04] отбелязва, че от септември 2017 г. до септември 2018 г. поддръжката на HTTP / 2 е нараснала от 16% на 30% от всички наблюдавани уебсайтове.

Освен това основните браузъри (напр. Chrome, Firefox, Edge и т.н.) вече предоставят пълна поддръжка за HTTP / 2 [05], (Някои дори разработени експериментални реализации преди HTTP / 2 да бъде приет като стандарт.)

Това широко разпространено приемане означава, че HTTP / 2 има потенциал да се превърне в фактическия комуникационен протокол в мрежата.

Мотивация зад HTTP / 2

Httpbis'харта [06] споменава няколко компонента на HTTP / 1.1, които могат да бъдат подобрени като мотивация за HTTP / 2. Основната цел на групата обаче беше да се намали латентността, възприемана от крайния потребител.

Да го направя, httpbis се счита за минимизиране на режима на честотна лента чрез компресия на заглавката и агресивни техники за предварително изтегляне (напр. натискане на сървъра), като в същото време се опитва системно да решава известни проблеми с производителността, като претоварване на връзката и проблем с блокирането на Head-of-Line (HoL) [07].

Освен това HTTP / 2 се изискваше да е съвместим с обратна връзка, което означава, че трябва да използва глаголи със същия метод, кодове на състоянието, URI и (повечето) полета на заглавия, открити в HTTP / 1.1. HTTP / 2 също трябваше да бъде проектиран да поддържа общите случаи на използване на HTTP, като настолни и мобилни уеб браузъри, програмни интерфейси, прокси сървъри и защитни стени.

За да поддържа тази съвместимост, работната група разработи механизъм за договаряне на протокол, който ще позволи на клиентите и сървърите да избират между HTTP / 1.1, HTTP / 2 или дори не-HTTP протоколи.

И така, какво е новото в HTTP / 2?

HTTP / 2 все още използва същите URI схеми и номера на портове, използвани в HTTP / 1.1 (т.е. порт 80 за http URI и порт 443 за https URI), но много неща се правят по различен начин под капака.

Най-фундаменталната промяна е въвеждането на рамки като основна единица данни на HTTP / 2.

HTTP / 1.1 традиционно използва пакети за представяне на мрежови данни. Клиентът конструира пакет от заявки с глагол от метод (напр GET or POST), добавяне на списък със заглавки, описващи връзката, и орган, съдържащ данни за приложението.

След получаване на заявка за пакет, HTTP / 1.1 сървърът отговаря с подобен пакет отговори, съдържащ исканата информация. В резултат на това всеки цикъл на заявка и отговор изисква нова връзка.

Обратно, HTTP / 2 клиентите установяват единична мрежова връзка със сървъра, която използват за всички следващи мрежови комуникации. Заглавките, потребителските данни, съобщенията за грешки и всякаква такава информация се пакетират в различни двоични структури от данни, наречени рамки, преди да бъдат предавани по мрежата.

Това изглежда като малка промяна, но носи значителни последици.

Компресия на хедъра

Голямо предимство при използването на рамки е, че HTTP / 2 заглавките са пакетирани в a HEADER рамка, която може да се компресира с помощта на нормални методи за компресия. Заглавките трябва да се прехвърлят преди каквито и да е данни, така че компресирането на заглавката може да намали режима на честотната лента, наложен от HTTP / 2.

Компресирането на хедъра, заедно със следните характеристики, подобряващи характеристиките на HTTP / 2, могат да бъдат особено полезни в приложения за мобилни устройства или интернет (IOT), където е необходимо минимално използване на мрежата.

Потоци и мултиплексиране

Независима последователност от семантично значими кадри се нарича a поток, Потоците получават уникален идентификатор от крайната точка (т.е. клиент или сървър), която ги е създала, така че другите крайни точки да могат да ги различават.

Крайните точки могат да преплитат кадрите от няколко потока през една и съща HTTP / 2 връзка, което позволява на една мрежова връзка да поддържа множество едновременно отворени потоци. Този процес се нарича мултиплексиране [08].

Използването на същата връзка намалява проблеми като претоварване на връзката и споменатия по-рано проблем с HoL и предлага по-добра производителност и по-гладко потребителско изживяване в сравнение с предишните версии на HTTP.

Зависима поток и приоритизация

Управлението на множество едновременни потоци означава, че някои потоци ще бъдат обработени преди други. HTTP / 2 позволява на програмиста (или администратора) да прецизира това поведение с функция, наречена зависимост на потока.

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

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

Приоритизирането и зависимостта на потока помагат на разработчиците и собствениците на уебсайтове да оптимизират използването на мрежата на техния сайт, което може значително да подобри потребителския опит на техния сайт.

Сървър натискане

И накрая, HTTP / 2 може да подобри производителността на уеб сайта, като предоставя функционалност „push“. HTTP / 2 уеб сървърът може да отговори с данни за повече заявки, отколкото клиентът първоначално е поискал. Това позволява на сървъра да предоставя данни, за които знае, че уеб браузърът ще трябва да изобрази страница, без да чака браузърът да проучи първия отговор и по този начин без допълнителни разходи за допълнителен цикъл на заявка.

Натискането на сървъра дава на разработчиците пълен контрол върху броя на заявките, необходими на браузъра за рендиране на уеб сайта им. Когато се използва правилно, тази функция може да сведе до минимум режийната мрежа.

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

HTTP / 2 сигурност

Ако сте прочели до този момент, трябва да е ясно, че разработчиците на HTTP / 2 наистина полагат усилия за подобряване на производителността. Трябва обаче да се отбележи, че HTTP / 2 може също да помогне за подобряване на цялостната сигурност на потребителите на браузъра.

По-конкретно, HTTP / 2 е дефиниран както за HTTP URI (т.е. без криптиране), така и за HTTPS URI (над TLS криптирани канали). Въпреки че самият стандарт не изисква използването на криптиране, всички основни реализации на браузъра (т.е. Firefox [09], Chrome, Safari, Opera, IE, Edge) са решили, че ще го направят само за лична употреба поддържа HTTP / 2 над TLS.

Всъщност браузърите различават HTTP / 2 с ясен текст и HTTP / 2 над криптирани TLS като два различни протокола. Извиква се криптиран HTTP / 2 h2 и ясно текст h2c, Към този текст никой от основните браузъри не поддържа h2c , Което означава, че TLS криптирането е задължително за даден уеб сайт, за да се възползва от другите предимства на HTTP / 2. Следователно, когато HTTP / 2 се превърне в мрежов протокол по подразбиране, собственици на наследени уеб сайтове, които все още не са надстроени до SSL /TLS, ще бъде силно мотивиран да го направи най-накрая.

Заключение

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

Вземете сертификат днес и се присъединете към нас в бъдеще.

Препратки

  1. HTTP протокол
  2. SPDY протокол
  3. HTTP / 2 спецификация
  4. Проучване за приемане на W3Techs HTTP / 2
  5. HTTP / 2 приемане в браузъри
  6. httpbis харта
  7. Блокиране на HOL
  8. Multiplexing
  9. Firefox на HTTP / 2

Абонирайте се за бюлетина на SSL.com

Не пропускайте нови статии и актуализации от SSL.com

Бъдете информирани и защитени

SSL.com е глобален лидер в киберсигурността, PKI и цифрови сертификати. Регистрирайте се, за да получавате най-новите новини от индустрията, съвети и съобщения за продукти от SSL.com.

Ще се радваме на вашите отзиви

Попълнете нашата анкета и ни кажете какво мислите за скорошната си покупка.