Потік Brotli (.br)

IETF Стандарт

Brotli: це алгоритм стиснення даних без втрат із відкритим вихідним кодом, розроблений Google і спеціально оптимізований для вебшрифтів (WOFF2) та кодування HTTP-вмісту (Content-Encoding: br), щоб пришвидшити доставлення вебсторінок.

Конвертувати з BROTLI у GZIP

Безкоштовний конвертер з BROTLI у GZIP у браузері. Миттєво конвертуйте файли на своєму пристрої.

Аналіз та метадані

Операційні системи та аналізатори файлів ідентифікують файли Brotli, перевіряючи початкову послідовність бінарних байтів:

Виберіть або перетягніть файли сюди

Приватно - файли ніколи не залишають ваш пристрій

або вставте Ctrl+V
Гарантія конфіденційності без передавання даних мережею: Жодного байта не передано на зовнішні сервери. Уся обробка відбувалася локально в ізольованому середовищі браузера.

Сигнатура заголовка на байтовому рівні (Magic Bytes)

Операційні системи та аналізатори файлів ідентифікують файли Brotli, перевіряючи початкову послідовність бінарних байтів:

ШІСТНАДЦЯТКОВА СИГНАТУРА (ЗСУВ 0):

CE B2 CF 81

ПОДАННЯ В ASCII: βÏ\x81

Стандартизація: IETF RFC 7932

Технічні характеристики

Архітектура контейнераФормат сирого бітового потоку з необов’язковим зазначенням розміру вікна та метаблоками
СтисненняКовзний словник LZ77 (до 16 МБ), контекстне моделювання другого порядку та статичний словник на 120 КБ
Порядок байтів (Endianness)Пакування бітів у порядку від молодшого до старшого (Little-Endian)
Колірні просториН/Д (Потік стиснення даних)
Канали та структураСтиснення байтових потоків загального призначення
Максимальні розміриДовільна довжина байтового потоку (підтримує потокове передавання без обмеження довжини)
ПрозорістьТочне збереження даних «байт-у-байт» без втрат
Потокове та прогресивне завантаженняРозбиття на метаблоки дає змогу безперервно передавати дані частинами через HTTP (chunked transfer)

Технічна матриця порівняння: Brotli проти конкурентів

Технічний атрибутBrotli (Поточний)GZZSTDDEFLATE
Вбудований статичний словникВключено веб-словник на 120 КБНемає (лише динамічні словники)Словники, що настроюються користувачемНемає (лише динамічні словники)
Веб-стиснення (порівняно з Gzip)На 15-25 % менший розмір, ніж після стиснення GzipБазовий стандарт (Gzip)На 10-20 % менший розмір, ніж після стиснення GzipБазовий Deflate
HTTP Content-Encoding'Content-Encoding: br''Content-Encoding: gzip''Content-Encoding: zstd''Content-Encoding: deflate'
Основна мета дизайнуПередача вебтексту та вебшрифтівЗагальне стиснення файлів UnixБази даних у реальному часі та приймання данихБазовий алгоритм стиснення

Типові режими пошкодження та посібник з відновлення в шістнадцятковому форматі

Браузер не завантажує ресурс з помилкою 'ERR_CONTENT_DECODING_FAILED'.

Першопричина: Проксі-сервер або сервер обірвав потік Brotli до передачі фінального метаблоку.

Відновлення: Очистьте кеш браузера, перевірте налаштування стиснення на сервері або розпакуйте локально через File2File.app.

Аналіз безпеки та векторів атак на парсери

Під час роботи зі статичним словником і контекстним моделюванням Brotli потрібно ретельно перевіряти межі пам'яті, щоб виявляти некоректні зворотні посилання.

Відомі вектори атак

  • Читання за межами буфера під час звернення до зміщень статичного словника, що виходять за межі таблиці.
  • Бомба розпакування (аналог zip-бомби), що вичерпує пам’ять клієнта через розпакування крихітного стисненого файлу.
  • Переповнення буфера під час зміни розміру кільцевого буфера ковзного вікна.

Рекомендації щодо захисту: Застосовуйте обмеження максимального розміру вихідного буфера під час декомпресії ненадійних потоків Brotli.

Історичне походження та віхи

2016IETF публікує Brotli як RFC 7932.
2015Google перепрофілює Brotli як універсальну альтернативу веб-стисненню Gzip для протоколу HTTP.
2013Інженери Google Jyrki Alakuijala та Zoltán Szabadka представляють Brotli для стиснення вебшрифтів WOFF2.

Основні переваги

  • Стиснені вебресурси HTML, CSS і JavaScript мають на 15-25% менший розмір, ніж після стиснення Gzip.
  • Містить попередньо визначений статичний словник розміром 120 КБ з поширеними веб-словами, тегами HTML та фразами.
  • Надзвичайно висока швидкість розпакування забезпечує майже миттєве відображення сторінки на пристрої клієнта.

Технічні обмеження та недоліки

  • Стиснення на 11-му рівні є обчислювально затратним (найкраще підходить для попереднього стиснення статичних ресурсів).
  • Вимагає HTTPS у всіх веббраузерах для запобігання пошкодженню прозорими проксі-серверами.
  • Сирі файли .br не мають вбудованих заголовків імені файлу чи дозволів без зовнішньої контейнеризації.

Цікаві технічні факти

  • Brotli названо на честь «Brötli», що швейцарським німецьким діалектом означає «маленький хліб».
  • Статичний словник об'ємом 120 КБ всередині Brotli містить тисячі поширених англійських, іспанських, німецьких, китайських та HTML-фрагментів.
  • Brotli підтримують провідні вебсервери та браузери, але його частка трафіку залежить від сервісу й типу відповіді.

Поширені технічні запитання

Чому Brotli швидший за Gzip для вебсайтів?

Brotli стискає файли HTML, CSS та JS до розміру на 20% меншого, ніж після стиснення Gzip, і розпаковує їх із подібною швидкістю, що зменшує кількість необхідних обмінів даними в стільникових мережах.

Чому Brotli вимагає HTTPS?

Веббраузери підтримують Brotli лише через захищені з’єднання HTTPS, оскільки застарілі прозорі проксі-сервери в інтернеті могли б неправильно інтерпретувати або пошкодити нове кодування 'br'.

Як можна розпакувати файл .br?

Ви можете миттєво розпакувати файли .br або .brotli у звичайний текст чи оригінальні файли за допомогою File2File.app безпосередньо у своєму веббраузері.