Конвертер потоков Raw DEFLATE в GZIP
Конвертация сырых данных DEFLATE в поток GZIP упаковывает сжатые полезные данные в стандартный контейнер с заголовками метаданных, чтобы операционные системы и веб-инструменты могли правильно их прочитать.
Сравнение форматов и технические характеристики
| Характеристика | DEFLATE | GZIP |
|---|---|---|
| MIME-тип | application/zlib | application/gzip |
| Тип | raw DEFLATE stream | DEFLATE stream container |
| Сжатие | LZ77 + Huffman coding | DEFLATE (RFC 1951) |
| Стандартная спецификация | IETF RFC 1950 / RFC 1951 | IETF RFC 1952 |
| Сигнатура файла (Magic Bytes) | 78 01 / 78 9C / 78 DA (zlib header bytes) | 1F 8B (gzip ID1/ID2) |
Обзор формата и применение
Потоки данных Raw DEFLATE содержат сжатые байты без каких-либо заголовков файлов или концевых контрольных сумм. Веб-браузеры и сетевые инструменты часто испытывают трудности с обработкой этих «голых» потоков, так как в них отсутствуют такие метаданные, как оригинальные имена файлов, метки времени модификации или идентификаторы операционных систем. Упаковка этих необработанных данных в контейнер GZIP решает эти проблемы совместимости. Разработчики сталкиваются с потоками raw DEFLATE в сетевых протоколах, таких как сжатие HTTP, фрагменты изображений PNG и архивы ZIP. Когда эти потоки необходимо сохранить в виде автономных файлов для инструментов командной строки или стандартных веб-загрузок, инженеры конвертируют их в формат GZIP. Это гарантирует, что утилиты распаковки мгновенно распознают тип файла и извлекут содержимое без вызова ошибок.
Технические спецификации и разбор кодеков
Raw DEFLATE (application/zlib или необработанный поток) использует комбинацию сопоставления по скользящему словарю LZ77 и кодирования Хаффмана для сжатия последовательностей байтов без каких-либо обрамляющих заголовков. Контейнер GZIP (application/gzip) берет эти точные полезные данные DEFLATE и обертывает их строгим 10-байтовым заголовком, содержащим двухбайтовую сигнатуру магического числа (0x1F, 0x8B), флаги метода сжатия, время изменения и ID операционной системы. Структура GZIP также добавляет 8-байтовый трейлер, содержащий контрольную сумму CRC32 для проверки целостности данных и размер несжатого файла по модулю 2 в 32-й степени.
Совместимость с ОС и браузерами
Потоки GZIP могут похвастаться универсальной совместимостью со всеми современными операционными системами, включая Linux, macOS и Windows. Инструменты командной строки, такие как gzip, gunzip и 7-Zip, нативно читают файлы GZIP. Веб-браузеры автоматически обрабатывают распаковку GZIP при получении HTTP-ответов от серверов, хотя для raw DEFLATE часто требуется пользовательская логика парсера внутри окружений JavaScript или модулей WebAssembly.
Полезная информация
Всегда проверяйте, правильно ли ваш инструмент распаковки читает трейлер GZIP, так как поврежденные концевые контрольные суммы CRC32 приведут к прерыванию работы инструментов извлечения, даже если базовые полезные данные DEFLATE остались неповрежденными.
Сравнение форматов и технические характеристики
Поток raw DEFLATE размером 10 МБ, конвертированный в файл GZIP, добавляет крошечные 18 байт накладных расходов для заголовков и трейлеров. Передача этого файла занимает около 0.04 секунды по соединению 5G, примерно 0.2 секунды в стандартной сети 4G и менее 0.01 секунды в гигабитной волоконно-оптической сети.
Часто задаваемые вопросы
Как конвертировать поток Raw DEFLATE в поток GZIP без потери качества?
Оба формата используют сжатие без потерь на основе абсолютно того же алгоритма DEFLATE. Конвертация между ними просто добавляет заголовки контейнера и контрольные суммы вокруг существующих сжатых байтов, а это значит, что в процессе упаковки не происходит никакой потери данных.
В чем разница между потоком Raw DEFLATE и потоком GZIP?
Raw DEFLATE содержит только сжатые полезные данные без идентифицирующих заголовков или нижних колонтитулов. Поток GZIP представляет собой стандартизированный файловый контейнер, который добавляет 10-байтовый заголовок и 8-байтовый концевой трейлер контрольной суммы к исходным данным DEFLATE для отслеживания метаданных и обнаружения ошибок.