Необработанный DEFLATE (.deflate)

IETF Стандарт

DEFLATE: это самый распространенный алгоритм сжатия данных без потерь в истории вычислительной техники, который на протяжении более трех десятилетий лежит в основе архивов ZIP, потоков GZIP, изображений PNG и веб-сжатия HTTP.

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

Бесплатный конвертер из GZIP в DEFLATE прямо в браузере. Конвертируйте файлы мгновенно на Вашем устройстве.

Анализ и метаданные

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

Выберите или перетащите файлы сюда

Конфиденциально - файлы никогда не покидают ваше устройство

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

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

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

HEX-СИГНАТУРА (СМЕЩЕНИЕ 0):

У потока DEFLATE без оболочки нет фиксированной сигнатуры; в начале потока zlib идут переменные байты CMF/FLG.

ПРЕДСТАВЛЕНИЕ ASCII: Фиксированной сигнатуры нет

Стандартизация: 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, ZIPАрхивы Unix .tar.gz, HTTP gzipВеб-шрифты (WOFF2), HTTP brЯдро Linux, базы данных, игры

Распространенные сценарии повреждения и руководство по восстановлению в HEX

Ошибка распаковки 'Z_DATA_ERROR: incorrect data check'.

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

Восстановление: Пропустите проверку Adler-32 с помощью необработанного алгоритма inflate или восстановите файл с помощью функции восстановления Deflate в File2File.app.

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

Анализаторы DEFLATE должны строго проверять коды построения деревьев Хаффмана во избежание выхода за границы буфера при записи указателей.

Известные векторы атак

  • Незавершенные или избыточные таблицы длин битов динамических деревьев Хаффмана, приводящие к некорректному чтению памяти.
  • Логическая бомба декомпрессии (zip-бомба), разворачивающая крошечные полезные данные в сотни гигабайт оперативной памяти.
  • Чтение за пределами буфера при обработке не прошедших проверку кодов расстояний скользящего окна.

Лучшие практики защиты: Задавайте жесткие ограничения на максимальный объем выделяемой памяти и коэффициент расширения во время распаковки.

История происхождения и ключевые этапы

1996Питер Дойч (Peter Deutsch) формализует алгоритм DEFLATE в стандарте IETF RFC 1951, а zlib: в RFC 1950.
1995Жан-Лу Гайе (Jean-loup Gailly) и Марк Адлер (Mark Adler) выпускают zlib.
1991Фил Кац изобретает 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?

С помощью File2File.app можно распаковать потоки raw DEFLATE или zlib в исходные несжатые файлы прямо в браузере.