Deflate konvertálása GZIP formátumba
A nyers DEFLATE GZIP adatfolyammá konvertálása metaadat-fejlécekkel ellátott szabványos tárolóba csomagolja a tömörített adatcsomagot, így az operációs rendszerek és a webes eszközök megfelelően tudják olvasni.
Formátum-összehasonlítás és műszaki specifikációk
| Specifikáció | DEFLATE | GZIP |
|---|---|---|
| MIME-típus | application/ | application/ |
| Típus | nyers DEFLATE-adatfolyam | DEFLATE-adatfolyam-tároló |
| Tömörítés | LZ77 + Huffman-kódolás | DEFLATE (RFC 1951) |
| Szabványos specifikáció | IETF RFC 1950 / RFC 1951 | IETF RFC 1952 |
| Fájlfejléc azonosító bájtjai | 78 01 / 78 9C / 78 DA (zlib header bytes) | 1F 8B (gzip ID1/ID2) |
A formátum áttekintése és alkalmazási területei
A nyers DEFLATE adatfolyamok tömörített bájtokat tartalmaznak fájlfejlécek vagy záró ellenőrzőösszegek nélkül. A webböngészők és a hálózati eszközök gyakran küzdenek ezen csupasz adatfolyamok feldolgozásával, mivel hiányoznak belőlük az olyan metaadatok, mint az eredeti fájlnevek, a módosítási időbélyegzők vagy az operációs rendszer azonosítói. Ezen nyers adatok GZIP-tárolóba csomagolása megoldja ezeket a kompatibilitási problémákat. A fejlesztők olyan hálózati protokollokon belül találkoznak nyers DEFLATE adatfolyamokkal, mint a HTTP-tömörítés, a PNG képdarabok és a ZIP archívumok. Amikor ezeket az adatfolyamokat önálló fájlként kell menteni a parancssori eszközök vagy a szabványos webes letöltések számára, a mérnökök GZIP formátumra alakítják át őket. Ez biztosítja, hogy a kitömörítő segédprogramok azonnal felismerjék a fájltípust, és hibaüzenetek nélkül kibontsák a tartalmat.
Műszaki specifikációk és kodekáttekintés
A nyers DEFLATE (RFC 1951 vagy nyers adatfolyam) az LZ77 csúszó szótár-illesztés és a Huffman-kódolás kombinációját használja a bájtsorozatok keretezési fejlécek nélküli tömörítésére. A GZIP tároló (application/gzip) veszi ezt a pontos DEFLATE hasznos adatot, és egy szigorú, 10 bájtos fejléccel csomagolja be, amely egy kétbájtos varázsszám-aláírást (0x1F, 0x8B), tömörítési módszer jelölőket, módosítási időt és egy operációs rendszer azonosítót tartalmaz. A GZIP szerkezet egy 8 bájtos utótagot is hozzáfűz, amely egy CRC32 ellenőrzőösszeget tartalmaz az adatintegritás ellenőrzéséhez, valamint a tömörítetlen fájl méretét modulo 2 a 32.-en. Az application/zlib MIME-típus az RFC 1950 szerinti zlib-burkolót jelöli a DEFLATE körül, nem nyers DEFLATE-adatfolyamot.
Operációs rendszer- és böngésző-kompatibilitás
A GZIP adatfolyamok kompatibilisek az összes modern operációs rendszerrel, köztük a Linuxszal, a macOS-szel és a Windowsszal. Az olyan parancssori eszközök, mint a gzip, a gunzip és a 7-Zip, natívan olvassák a GZIP fájlokat. A webböngészők automatikusan kezelik a GZIP kitömörítését, amikor HTTP-válaszokat kapnak a szerverektől, bár a nyers DEFLATE gyakran egyéni elemző logikát igényel a JavaScript-környezetekben vagy a WebAssembly modulokban. A támogatás az alkalmazástól, az eszköztől, az operációs rendszertől és annak verziójától is függ.
Hasznos információk
Mindig ellenőrizze, hogy a kitömörítő eszköz helyesen olvassa-e a GZIP záró részét, mert a sérült CRC32-ellenőrzőösszeg miatt a kicsomagolás leállhat akkor is, ha a DEFLATE hasznos adata sértetlen.
Gyakran ismételt kérdések
Hogyan lehet a nyers DEFLATE-et GZIP adatfolyammá átalakítani minőségromlás nélkül?
Mindkét formátum pontosan ugyanazon a DEFLATE-algoritmuson alapuló, veszteségmentes tömörítést használ. A köztük végzett átalakítás során egyszerűen tárolófejlécek és ellenőrző összegek kerülnek a meglévő tömörített bájtok köré, így a csomagolási folyamat során nem történik adatvesztés.
Mi a különbség a nyers DEFLATE és a GZIP adatfolyam között?
A nyers DEFLATE csak a tömörített hasznos adatot tartalmazza azonosító fejlécek vagy záró részek nélkül. A GZIP adatfolyam egy szabványosított fájltároló, amely egy 10 bájtos fejléccel és egy 8 bájtos záró ellenőrzőösszeggel egészíti ki a nyers DEFLATE adatokat a metaadatok nyomon követése és a hibafelismerés érdekében.