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

IETF Стандарт

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

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

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

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

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

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

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

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

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

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

HEX-СИГНАТУРА (СМЕЩЕНИЕ 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, 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.

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

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

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

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

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

Исторические истоки и вехи

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

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