Převod Deflate na GZIP
Konverze surového proudu DEFLATE na proud GZIP zabalí komprimovaná data do standardního kontejneru s hlavičkami metadat, aby je operační systémy a webové nástroje mohly správně přečíst.
Porovnání formátů a technické specifikace
| Specifikace | DEFLATE | GZIP |
|---|---|---|
| MIME typ | application/ | application/ |
| Typ | surový proud DEFLATE | kontejner proudu DEFLATE |
| Komprese | LZ77 + Huffmanovo kódování | DEFLATE (RFC 1951) |
| Standardní specifikace | IETF RFC 1950 / RFC 1951 | IETF RFC 1952 |
| Hlavička souboru (Magic bytes) | 78 01 / 78 9C / 78 DA (zlib header bytes) | 1F 8B (gzip ID1/ID2) |
Přehled formátu a použití
Surové datové proudy DEFLATE obsahují komprimované bajty bez jakýchkoli hlaviček souborů nebo koncových kontrolních součtů. Webové prohlížeče a síťové nástroje mají často potíže se zpracováním těchto holých proudů, protože postrádají metadata, jako jsou původní názvy souborů, časová razítka úprav nebo identifikátory operačního systému. Zabalení těchto surových dat do kontejneru GZIP tyto problémy s kompatibilitou řeší. Vývojáři se se surovými proudy DEFLATE setkávají v síťových protokolech, jako je komprese HTTP, části obrázků PNG a archivy ZIP. Když je potřeba tyto proudy uložit jako samostatné soubory pro nástroje příkazové řádky nebo standardní webová stahování, inženýři je převedou do formátu GZIP. To zajišťuje, že dekompresní nástroje okamžitě rozpoznají typ souboru a rozbalí obsah bez vyvolání chyb.
Technické specifikace a přehled kodeků
Surový DEFLATE je bitový proud podle RFC 1951, který používá párování LZ77 a Huffmanovo kódování bez rámovacích hlaviček nebo pevného podpisu. Typ MIME application/zlib označuje proud DEFLATE zabalený do zlib podle RFC 1950, nikoli surový DEFLATE. GZIP (application/gzip) obaluje obsah DEFLATE hlavičkou začínající bajty 1F 8B a patičkou s kontrolním součtem CRC32 a nekomprimovanou velikostí modulo 2^32.
Kompatibilita s operačními systémy a prohlížeči
Proudy GZIP se mohou pochlubit univerzální kompatibilitou napříč moderními operačními systémy, včetně Linuxu, macOS a Windows. Nástroje příkazové řádky jako gzip, gunzip a 7-Zip čtou soubory GZIP nativně. Webové prohlížeče automaticky zpracovávají dekompresi GZIP při příjmu odpovědí HTTP ze serverů, ačkoli surový DEFLATE často vyžaduje vlastní logiku parseru v prostředí JavaScriptu nebo modulech WebAssembly. Podpora se také liší podle aplikace, zařízení, operačního systému a jeho verze.
Užitečné informace
Vždy ověřte, zda váš dekompresní nástroj správně čte koncovou část souboru GZIP, protože poškozené koncové kontrolní součty CRC32 způsobí, že nástroje pro rozbalení operaci přeruší, i když je podkladový payload DEFLATE neporušený.
Často kladené otázky
Jak převést surový proud DEFLATE na proud GZIP bez ztráty kvality?
Oba formáty využívají bezztrátovou kompresi založenou na naprosto stejném algoritmu DEFLATE. Konverze mezi nimi jednoduše přidává hlavičky kontejneru a kontrolní součty kolem existujících komprimovaných bajtů, což znamená, že během procesu balení nedochází k žádné ztrátě dat.
Jaký je rozdíl mezi surovým proudem DEFLATE a proudem GZIP?
Surový proud DEFLATE obsahuje pouze komprimovaná data bez jakýchkoli identifikačních hlaviček nebo patiček. Proud GZIP je standardizovaný kontejner souborů, který k surovým datům DEFLATE přidává 10bajtovou hlavičku a 8bajtový koncový kontrolní součet pro sledování metadat a detekci chyb.