Převod GZIP na Deflate
Převedení proudu GZIP na surový DEFLATE odstraní vnější obal souboru a metadata hlavičky a zanechá pouze zkomprimovaný užitečný obsah pro specializované síťové protokoly a nízkoúrovňové archivy.
Porovnání formátů a technické specifikace
| Specifikace | GZIP | DEFLATE |
|---|---|---|
| MIME typ | application/ | application/ |
| Typ | kontejner proudu DEFLATE | surový proud DEFLATE |
| Komprese | DEFLATE (RFC 1951) | LZ77 + Huffmanovo kódování |
| Standardní specifikace | IETF RFC 1952 | IETF RFC 1950 / RFC 1951 |
| Hlavička souboru (Magic bytes) | 1F 8B (gzip ID1/ID2) | 78 01 / 78 9C / 78 DA (zlib header bytes) |
Přehled formátu a použití
Převedení proudu GZIP na surový DEFLATE se často objevuje při vývoji webových aplikací, síťovém programování a v pracovních postupech nízkoúrovňového ukládání dat. Vývojáři se často setkávají s formátem GZIP při ukládání jednotlivých souborů na disk, protože formát obsahuje užitečná metadata, jako jsou původní názvy souborů a časová razítka úprav. Moderní protokoly komprese HTTP a specifické binární formáty však vyžadují pouze komprimovaný užitečný obsah bez jakýchkoliv obalových bajtů. Provedení této konverze umožňuje inženýrům přivádět standardní komprimovaná data přímo do síťových proudů nebo vlastních analyzátorů. Například vytvoření vlastního obslužného programu odpovědí HTTP nebo práce s archivy ZIP často vyžaduje odstranění hlavičky GZIP a patičky CRC32, aby se izoloval surový výstup algoritmu. Odstranění těchto dodatečných dat kontejneru snižuje režii v situacích, kdy v omezených programovacích prostředích záleží na každém jednotlivém bajtu.
Technické specifikace a přehled kodeků
Proud GZIP označený typem MIME application/gzip používá strukturu kontejneru definovanou v RFC 1952. Začíná dvoubajtovou hlavičkou s magickým číslem (0x1F, 0x8B), po níž následují příznaky komprese, čas úpravy, identifikátor operačního systému a případně název souboru. Uprostřed jsou vlastní komprimovaná data a na konci čtyřbajtový kontrolní součet CRC32 a čtyřbajtová hodnota nekomprimované velikosti. Surový DEFLATE je bitový proud podle RFC 1951 bez pevného podpisu, rámovací hlavičky nebo patičky. Typ MIME application/zlib označuje obal zlib kolem DEFLATE podle RFC 1950, nikoli surový proud DEFLATE. Při převodu GZIP na surový DEFLATE se odstraní metadata a kontrolní součet GZIP, komprimovaný obsah se zachová.
Kompatibilita s operačními systémy a prohlížeči
Surové proudy DEFLATE běží nativně napříč moderními operačními systémy a webovými prostředími prostřednictvím standardních programovacích jazyků, jako jsou Python, Node.js a C++. Prohlížeče zpracovávají DEFLATE nativně prostřednictvím zásobníku hlaviček kódování obsahu HTTP. Operační systémy jako Windows, macOS a Linux podporují surové proudy prostřednictvím systémových kompresních knihoven, jako je zlib. Mobilní platformy včetně Androidu a iOS poskytují přímý přístup přes API k rutinám DEFLATE pro vlastní vrstvy úložiště aplikací.
Užitečné informace
Vždy ověřte, zda váš cílový analyzátor očekává čistý proud podle RFC 1951 namísto proudu zabaleného v knihovně zlib, protože zlib přidává dvoubytovou hlavičku, kterou analyzátory surového DEFLATE odmítnou.
Často kladené otázky
Jak převést proud GZIP na surový DEFLATE bez ztráty kvality?
Oba formáty používají identické bezztrátové kompresní algoritmy. Jejich konverze jednoduše znamená přečtení kontejneru GZIP, odstranění desetibytové hlavičky a osmibytové patičky a uložení vnitřních komprimovaných bloků. Žádná data se neztratí, protože podkladový algoritmus zůstává beze změny.
Jaký je rozdíl mezi proudem GZIP a surovým DEFLATE?
GZIP je kompletní kontejner souboru, který obsahuje hlavičku magického bajtu, původní názvy souborů, časová razítka úprav a patičku kontrolního součtu. Surový DEFLATE jsou pouze samotná komprimovaná data neobsahující žádné hlavičky, patičky ani metadata souboru.