Що таке HTTP/2 і як це впливає на майбутнє Інтернету?
Можливо, ви ще не чули про HTTP/2, але це найостанніше оновлення HTTP. Новий стандарт протоколу вводить деякі нові концепції і робить зв'язок між серверами і додатками більш швидкою і ефективною.
Що таке HTTP/2?
Протокол передачі гіпертексту версії 2, або HTTP/2, є першим великим оновленням HTTP за 15 років.
Попередній стандарт протоколу, HTTP/1.1, використовувався з 1997 року і використовує суміш незграбних обхідних шляхів для поліпшення обмежень HTTP.
Він заснований на SPDY («швидкий»), експеримент з відкритим вихідним кодом, запущений Google для вирішення деяких проблем і обмежень HTTP/1.1.
Інженерна робоча група з Інтернету (IETF) визначає подібні зміни в протоколі передачі гіпертексту версії 2, проект 17:
"HTTP/2 дозволяє більш ефективно використовувати мережеві ресурси і зменшити сприйняття затримки за рахунок введення стиснення поля заголовка і дозволу декількох одночасних обмінів по одному і тому ж з'єднанню [...]
«Це також дозволяє призначати пріоритети запитам, дозволяючи більш важливим запитам виконуватися швидше, що ще більше підвищує продуктивність».
«HTTP/2 також забезпечує більш ефективну обробку повідомлень за рахунок використання двійкового фрейму повідомлення».
"Ця специфікація є альтернативою синтаксису повідомлень HTTP/1.1, але не застаріла. Існуюча семантика HTTP залишається незмінною ".
HTTP/2 засновано на SPDY
До 2012 року більшість сучасних браузерів і багато популярних сайтів (Google, Twitter, Facebook і т. Д.) Вже підтримували SPDY. У міру зростання популярності SPDY робоча група HTTP (HTTP-WG) розпочала роботу з оновлення стандарту HTTP.
З цього моменту SPDY став основою і експериментальною гілкою для нових функцій в HTTP/2. У той час ми вивчали, як SPDY може поліпшити перегляд сторінок З тих пір стандарт версії 2 був розроблений, затверджений і опублікований.
Багато функцій SPDY були включені в HTTP/2, і Google врешті припинив підтримку цього протоколу на початку 2016 року.
Більшість браузерів зрештою перестали підтримувати SPDY, і, оскільки альтернативи немає, HTTP/2 стає стандартом де-факто.
Хоча стандарт протоколу HTTP/2 не є суворо сумісним з HTTP/1, сумісність може бути досягнута за допомогою перекладу. Клієнт, який використовує тільки HTTP/1.1, не буде розуміти сервер, який використовує тільки HTTP/2, і навпаки, тому нова версія протоколу - HTTP/2, а не HTTP/1.2.
Тим не менш, важливою частиною роботи, виконуваної HTTP-WG, є забезпечення того, щоб HTTP/1 і HTTP/2 могли переводитися туди і назад без втрати інформації.
Будь-які нові представлені механізми або функції також не будуть залежати від версії і будуть назад сумісні з існуючою мережею.
HTTP/2 насправді не те, що користувач може реалізувати, але є речі, які ми можемо зробити, щоб вплинути на швидкість нашого перегляду. Чи вірите ви в один з цих поширених міфів, щоб прискорити вашу швидкість інтернету?
Переваги та особливості HTTP/2
HTTP/2 постачається з чудовими оновленнями HTTP. Деякі з найбільш важливих з них - двійкове кадрування, мультиплексування, встановлення пріоритетів потоку, управління потоком і передача на сервер.
Двійкове обрамлення
Після оновлення HTTP2/зв'язок за протоколом HTTP поділяється на обмін двійково закодованими кадрами. Ці кадри відображаються в повідомленнях, які належать до певного потоку. Потоки потім мультиплексуються (в деякому сенсі сплетені) в одному TCP-з'єднанні.
Новий рівень двоїчного кадрування вводить деяку нову термінологію; Потоки, повідомлення та кадри.
- Потоки - це двонаправлені потоки байтів, які переносять одне або кілька повідомлень.
- Кожен з цих потоків має унікальний ідентифікатор і може переносити двонаправлені повідомлення з використанням необов'язкової інформації про пріоритет.
- Кадри - це найменша одиниця зв'язку HTTP/2, яка містить певні набори даних (заголовки HTTP, корисні дані повідомлень тощо). Заголовок як мінімум ідентифікує потік, якому належить кадр.
- Повідомлення - це повний набір кадрів, які відображаються на логічний запит або повідомлення у відповідь.
- Кожне повідомлення є логічним HTTP-повідомленням, наприклад, запитом або відповіддю, що складається з одного або декількох кадрів.
Це дозволяє нам використовувати одне TCP-з'єднання, для чого в минулому потрібно декілька.
мультиплексування
HTTP/1.1 гарантує, що лише одна відповідь може бути доставлена за одне з "єднання. І браузер відкриє додаткові з'єднання TCP, якщо клієнт хоче зробити кілька паралельних запитів.
HTTP/2 усуває це обмеження HTTP/1.1 і забезпечує повне мультиплексування запитів і відповідей. Це означає, що клієнт і сервер можуть розбивати HTTP-повідомлення на незалежні кадри, які потім чергуються і повторно збираються на іншому кінці.
Загалом, це найважливіше удосконалення HTTP/2, оскільки воно частково усуває необхідність у декількох з'єднаннях. Це, в свою чергу, забезпечить численні переваги у продуктивності для всіх веб-технологій.
Зменшена кількість з'єднань означає меншу кількість рукостискань на транспортному рівні (TLS), краще повторне використання сеансів і загальне зниження вимог до ресурсів клієнта і сервера. Це робить програми швидшими, простішими і дешевшими у розгортанні.
Веб-сайти з великою кількістю зовнішніх ресурсів (зображення або скрипти) побачать найбільший приріст продуктивності завдяки мультиплексуванню HTTP/2.
Пріоритетність потоку і залежність
Подальші поліпшення мультиплексованих потоків зроблені з ваговими і потоковими залежностями. HTTP/2 дозволяє нам дати кожному потоку вагу (значення від 1 до 256) і зробити її явно залежною від іншого потоку.
Ця комбінація залежності і ваги призводить до створення дерева пріоритетів, яке повідомляє серверу, як клієнт волів би отримувати відповіді.
Сервер буде використовувати інформацію в дереві пріоритетів для управління розподілом ЦБ, пам'яті та інших ресурсів, а також розподілом смуги пропускання, щоб гарантувати отримання клієнтом оптимальної доставки високопріоритетних відповідей.
Керування потоком
Проблеми з керуванням потоком в HTTP/2 аналогічні HTTP/1.1. Однак, оскільки потоки HTTP/2 мультиплексуються в одному TCP-з'єднанні, управління потоком в HTTP/1.1 більше не працює.
Коротше кажучи, управління потоком необхідно, щоб зупинити потоки, що заважають один одному, щоб викликати блокування. Це робить можливим мультиплексування. HTTP/2 дозволяє використовувати багато алгоритмів керування потоком, не вимагаючи змін протоколу.
HTTP/2 не вказано алгоритму керування потоком. Замість цього було надано набір будівельних блоків, щоб допомогти клієнтам і серверам застосовувати свій власний контроль потоку.
Ви можете знайти специфіку цих будівельних блоків у розділі «Управління потоком» інтернет-проекту HTTP/2.
Сервер Push
Ваш переглядач зазвичай запитує та отримує документ HTML з сервера під час першого відвідування сторінки. Потім серверу потрібно дочекатися, поки браузер проаналізує HTML-документ і відправить запит на вбудовані ресурси (CSS, JavaScript, зображення тощо).
У HTTP/1.1 сервер не може надсилати ці ресурси до тих пір, поки браузер не запросить їх, а для кожного ресурсу потрібен окремий запит (тобто Кілька рукостискань і з'єднань).
Пересилання сервера зменшить затримку, дозволяючи серверу відправляти ці ресурси без запиту, оскільки він вже знає, що клієнту вони потрібні. Таким чином, у наведеному вище прикладі сервер використовуватиме CSS, JavaScript (загальна мова сценаріїв на веб-сторінках), а також зображення у переглядачі для швидкого відображення сторінки.
По суті, серверна розсилка дозволяє серверу надсилати кілька відповідей на один клієнтський запит.
Хоча вручну, це ефект, який ми в даний час отримуємо, вбудовуючи CSS або JS в наші HTML-документи - ми передаємо вбудований ресурс клієнту, не чекаючи, поки клієнт запросить його.
Це великий крок порівняно з поточним стандартом HTTP суворого робочого процесу сам-на-сам із запитом-відповіддю.
Обмеження HTTP/2
SPDY дотримувався більш суворої політики безпеки і вимагав шифрування SSL для всіх з'єднань. HTTPS/2 не потребує шифрування, але багато служб не обслуговуватимуть HTTP/2 без SSL.
Всі основні переглядачі підтримують HTTP/2, але жоден з них не підтримуватиме його без шифрування. На веб-сайті CanIU є великий огляд таблиць поточної підтримки браузером HTTP/2, як показано вище.
Зворотна сумісність і переклади між HTTP/1.1 і HTTP/2 сповільнюють швидкість завантаження сторінки.
На даний момент немає реальної причини, чому шифрування не повинно бути налаштуванням за замовчуванням або обов'язковим налаштуванням. Якщо у вас вже є сертифікат SSL на вашому сайті, ви можете підвищити безпеку вашого сайту HTTPS, включивши HSTS.
Чи є HTTP/2 наступною великою річчю?
HTTP/2 був запропонований в якості стандарту в середині 2015 року, і більшість браузерів додали його підтримку до кінця цього року. HTTP/2 вже впливає на роботу Інтернету і взаємодію програм і серверів.
Немає ніяких вимог для примусового використання HTTP/2, але поки він служить тільки перевагам, а не недолікам. Це також досить незначна зміна з точки зору користувача, яку люди насправді не помітять.
За даними W3Tech, 31,7% з перших 10 мільйонів веб-сайтів зараз підтримують HTTP/2. Для більшості з вас найшвидший спосіб включити HTTP/2 на своєму веб-сайті - використовувати CDN Cloudflare.
Наступний запропонований стандарт (HTTP/3) вже знаходиться в розробці і заснований на QUIC, іншому експериментальному проекті Google. У жовтні цього року HTTP-WG IETF і робоча група QUIC офіційно попросили QUIC стати новим світовим стандартом і перейменувати його в HTTP/3.
Якщо вам цікаво, у Akamai.com є швидкий інструмент, щоб перевірити, чи підтримує ваш браузер HTTP/2. Якщо цього не станеться, можливо, подумати про зміну браузера.
