Сирий DEFLATE (.deflate)

IETF Стандарт

DEFLATE - це найпоширеніший алгоритм стиснення даних без втрат в історії обчислювальної техніки, що понад три десятиліття забезпечує роботу архівів ZIP, потоків GZIP, зображень PNG та вебстиснення HTTP.

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

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

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

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

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

100% приватна конвертація у браузері - файли ніколи не покидають ваш пристрій

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

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

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

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

78 9C / 78 01 / 78 DA

ASCII-УЯВЛЕННЯ: xœ / x. / xÚ

Стандартизація: IETF RFC 1951 / RFC 1950 (zlib)

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

Архітектура контейнераСирий бітовий потік RFC 1951 або потік з обгорткою zlib RFC 1950 із 2-байтним заголовком та контрольною сумою Adler-32
СтисненняКовзний словник LZ77 (вікно до 32 КБ) у поєднанні з динамічним/статичним ентропійним кодуванням Хаффмана
Порядок байтів (Endianness)Порядок пакування бітів зі зворотним порядком байтів (Little-Endian)
Колірні просториНе застосовується (потік стиснення даних)
Канали та структураСирий потік бінарних або текстових даних
Максимальні розміриНеобмежена довжина потоку
Прозорість100% точне відтворення даних без втрат
Потокове та прогресивне завантаженняБлоковий бітовий потік підтримує довільне безперервне потокове передавання байтів

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

Технічний атрибутDEFLATE (Поточний)GZBROTLIZSTD
СтандартизаціяIETF RFC 1951 (Сирий) / RFC 1950 (zlib)IETF RFC 1952 (Gzip)IETF RFC 7932 (Brotli)IETF RFC 8878 (Zstandard)
Ковзне вікноМаксимум 32 кілобайтиМаксимум 32 кілобайтиДо 16 мегабайтДо 2 гігабайт
Режим контрольної сумиAdler-32 (в обгортці zlib)CRC-32 (в обгортці gzip)Відсутній вбудований у потікxxHash64 (швидкий 64-бітний хеш)
Щоденне використанняЗображення PNG, потоки PDF, ZIPUnix .tar.gz, HTTP gzipВебшрифти (WOFF2), HTTP brЯдро Linux, бази даних, ігри

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

Розпакування завершується помилкою 'Z_DATA_ERROR: incorrect data check'.

Першопричина: Невідповідність 4-байтової контрольної суми Adler-32 в кінці потоку, оберненого в zlib.

Відновлення: Обійдіть перевірку Adler-32 за допомогою сирого inflate або відновіть за допомогою File2File Deflate Recovery.

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

Аналізатори DEFLATE повинні суворо перевіряти побудову кодів дерев Хаффмана, щоб запобігти запису вказівників за межі буфера.

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

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

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

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

1996Пітер Дойч (Peter Deutsch) формалізує DEFLATE як IETF RFC 1951, а zlib як RFC 1950.
1995Жан-Лу Гаїллі (Jean-loup Gailly) та Марк Адлер (Mark Adler) випускають zlib - універсальну контрольну бібліотеку мовою C для DEFLATE.
1991Філ Кац (Phil Katz) вигадує DEFLATE для PKZIP 2.0 на заміну застарілим алгоритмам Implode та Reduce.

Головні переваги та плюси

  • Беззаперечний глобальний стандарт: реалізований апаратно, в операційних системах та будь-яких середовищах виконання програм.
  • Дизайн без патентів і роялті гарантує відкритий доступ у всій комп'ютерній індустрії.
  • Швидке розпакування з мінімальним обсягом пам'яті (потребує лише 32 КБ пам'яті ковзного вікна).

Технічні обмеження та мінуси

  • Ковзне вікно обмежене 32 КБ, що знижує ефективність стиснення на великих файлах із віддаленими повторюваними даними.
  • Нижчі коефіцієнти стиснення сучасних вебданих порівняно з новішими алгоритмами, такими як Brotli та Zstandard.
  • Сирі потоки DEFLATE не містять метаданих самоопису чи контейнерної обгортки без обгорток zlib або gzip.

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

  • Філ Кац винайшов DEFLATE після судового позову від Unisys щодо запатентованого алгоритму LZW, який використовувався в ранніх утилітах PKARC.
  • Стандартні байти заголовка zlib '78 9C' вказують на стандартне стиснення, '78 01' - на низьке, а '78 DA' - на максимальне стиснення.
  • Кожне зображення PNG на Землі використовує DEFLATE для стиснення своїх піксельних блоків IDAT.

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

Яка різниця між DEFLATE, zlib та gzip?

DEFLATE - це сирий алгоритм стиснення (RFC 1951). Zlib огортає DEFLATE за допомогою 2-байтового заголовка та контрольної суми Adler-32 (RFC 1950). Gzip огортає DEFLATE метаданими файлу та контрольною сумою CRC-32 (RFC 1952).

Чому PNG використовує DEFLATE?

Формат PNG було створено в 1995 році як заміну GIF без використання запатентованих алгоритмів LZW, обравши для стиснення відкритий і вільний від роялті DEFLATE.

Як розпакувати сирий файл .deflate?

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