Konvertor proudu GZIP na surový 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/gzip | application/zlib |
| Typ | DEFLATE stream container | raw DEFLATE stream |
| Komprese | DEFLATE (RFC 1951) | LZ77 + Huffman coding |
| 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 identifikovaný typem MIME application/gzip používá strukturu kontejneru definovanou v RFC 1952. Začíná dvoubytovou hlavičkou magického čísla (0x1F, 0x8B), po které následují příznaky komprese, čas úpravy, ID operačního systému a volitelný název souboru. Skutečná komprimovaná data se nacházejí uprostřed a soubor končí čtyřbytovým kontrolním součtem CRC32 a čtyřbytovým indikátorem nekomprimované velikosti. Naproti tomu surový DEFLATE identifikovaný pomocí application/zlib nebo surové proudy spoléhá na RFC 1951. Neobsahuje žádné magické bajty, žádné hlavičky ani patičky. Využívá algoritmus LZ77 v kombinaci s Huffmanovým kódováním k přímému ukládání komprimovaných bloků. Konverze mezi nimi je zcela bezztrátová, protože oba formáty používají naprosto stejný kompresní engine DEFLATE. Konverzní proces jednoduše rozbalí obal GZIP, zahodí metadata a extrahuje vnitřní proud bajtů DEFLATE.
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.
Porovnání formátů a technické specifikace
Textový soubor o velikosti 10 megabajtů zkomprimovaný do proudu GZIP se zmenší přibližně na 2 megabyty. Odstraněním hlavičky a patičky za účelem vytvoření souboru se surovým DEFLATE vznikne identická velikost užitečného obsahu 2 megabyty. Přenos tohoto 2megabajtového souboru trvá přibližně 0,04 sekundy na 500 Mb/s optickém připojení, zhruba 0,4 sekundy na standardní síti 5G a přibližně 4 sekundy na přetíženém mobilním připojení 4G.
Č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.