Table of Content

Збереження стану HTTP

Протокол HTTP є протоколом, який не зберігає стан між запитами. Це означає, що запит повинен містити всю інформацію необхідну для його обробки з боку сервера. Без потреби зберігання сервером мета даних про попередній запит.

Протокол HTTP 2.0

В даний момент в майже остаточному вигляді розроблено принципово нову версію протоколу HTTP – HTTP 2.0. На даний момент цей протокол знаходиться на стадії затвердження. Оскільки цей протокол вирішує певні проблеми при використанні WEB-технологій то спеціалісти прогнозують його впровадження в недалекому майбутньому. Ключовими особливостями протокола HTTP 2.0 є такі:

  1. HTTP 2.0 є бінарним протокол на відміну від текстового HTTP.
  2. Підвищення ефективності використання мережевих ресурсів за рахунок:
    1. Мультиплексування потоків.
    2. Розстановки пріоритетів потоків.
    3. Можливості скасування передачі потоку.
    4. Стиснення HTTP заголовків.
    5. Надсилання push відповідей від сервера.
  3. Значне збільшення продуктивності роботи в браузерах і мобільних пристроях.
  4. Спрощення розгортування систем, що базуються на протоколі HTTP.
  5. Виконання умов безпеки.


Бінарний формат
Дані надсилають у вигляді фреймів, що мають відповідну структуру:

  1. Length
  2. Type
  3. Flags
  4. StreamID – ідентифікатор потоку
  5. Навантаження фрейма (змістовна частина).

Фрейми об’єднуються в потоки. Поток – це двостороння логічна послідовність фреймів, якими обмінюються клієнт та сервер в середині з’єднання. Для потоку є важливою саме послідовність фреймів. Отримувач обробляє фрейми в порядку їх отримання.


Мультиплексування фреймів
Мультиплексування означає можливість передачі декількох потоків в одному з’єднанні.


Пріоритети потоків.
Потоки мають пріоритети за допомогою, яких одна з сторін обміну вказує іншій на важливість даного потоку. Потоки з вищими пріоритетами мають оброблятись у першу чергу. Важливою особливістю є те, що пріоритет може динамічно змінюватись наприклад в залежності від дій користувача. (прокрутка документа)


Скасування передачі повідомлення
При HTTP заголовком Content-Length певної довжини не можна просто перервати передачу. Зазвичай це робиться шляхом розірвання TCP з’єднання. В тім це вимагає наступного повторного з’єднання в HTTP 2.0 передбачено скасування передачі потоку шляхом надсилання спеціального фрейму “RST_STREAM”


Стиснення заголовків.
Необхідність у стисненні HTTP заголовків диктується наступними причинами:

  1. У значній кількості повідомлень заголовки повторюються. Проблема збільшується тим фактом, що HTTP протокол не зберігає стан.
  2. Збільшується об’єм повідомлення внаслідок чого вони можуть перевишити розмір TCP вікна. Це в свою чергу знижує ефективність передачі.

В рамках HTTP 2.0 розроблений спеціальний алгоритм HPACK – стиснення заголовків більш стійкий до атак стиснення.


Push повідомлення сервера.
Якщо клієнт запитує деякий ресурс R1, а сервер може спрогнозувати з великою ймовірністю, що йому знадобиться ресурс R2 він може надіслати його автоматично без явного запиту. Отриманий ресурс розміщується в кеші тому цей механізм отримав назву “передачею кеш”. Коли виникне реальна потреба в ресурсі клієнт може взяти його вже з кешу. Для надсилання push повідомлень клієнт має дати відповідний дозвіл. При чому цей дозвіл в будь-який момент може бути скасований.

Last modified: 11.05.2018

Author

Comments

Write a Reply or Comment

Your email address will not be published.