Pretvarač GZIP streama u sirovi DEFLATE
Pretvaranje GZIP streama u sirovi DEFLATE uklanja vanjski omot datoteke i metapodatke zaglavlja, ostavljajući samo komprimirani sadržaj za specijalizirane mrežne protokole i niske razine arhiva.
Usporedba formata i tehničke specifikacije
| Specifikacija | GZIP | DEFLATE |
|---|---|---|
| MIME vrsta | application/gzip | application/zlib |
| Vrsta | DEFLATE stream container | raw DEFLATE stream |
| Kompresija | DEFLATE (RFC 1951) | LZ77 + Huffman coding |
| Standardna specifikacija | IETF RFC 1952 | IETF RFC 1950 / RFC 1951 |
| Zaglavlje čarobnih bajtova (Magic Bytes) | 1F 8B (gzip ID1/ID2) | 78 01 / 78 9C / 78 DA (zlib header bytes) |
Pregled formata i primjena
Pretvaranje GZIP streama u sirovi DEFLATE često se događa u računalnom razvoju, mrežnom programiranju i tijekovima rada pohrane podataka na nižoj razini. Programeri se često bave GZIP-om prilikom spremanja pojedinačnih datoteka na disk jer format uključuje korisne metapodatke poput izvornih naziva datoteka i vremenskih oznaka izmjene. Međutim, moderni HTTP protokoli kompresije i specifični binarni formati očekuju samo komprimirani sadržaj bez ikakvih bajtova omota. Izvođenje ove pretvorbe omogućuje inženjerima da unose standardne komprimirane podatke izravno u mrežne tokove ili prilagođene analizatore. Na primjer, izgradnja prilagođenog rukovatelja HTTP odgovorima ili rad s ZIP arhivama često zahtijeva uklanjanje GZIP zaglavlja i CRC32 podnožja kako bi se izolirao sirovi izlaz algoritma. Uklanjanje ovih dodatnih podataka o spremniku smanjuje opterećenje kada je svaki pojedini bajt važan u ograničenim programskim okruženjima.
Tehničke specifikacije i pregled kodeka
GZIP stream identificiran s MIME tipom application/gzip koristi strukturu spremnika definiranu u RFC 1952. Počinje zaglavljem magičnog broja od dva bajta (0x1F, 0x8B), nakon čega slijede zastavice kompresije, vrijeme izmjene, ID operativnog sustava i opcionalni naziv datoteke. Stvarni komprimirani podaci nalaze se u sredini, a datoteka završava četverobajtno CRC32 kontrolnim zbrojem i četverobajtnim pokazateljem nekomprimirane veličine. Suprotno tome, sirovi DEFLATE identificiran s application/zlib ili sirovim streamovima oslanja se na RFC 1951. Ne sadrži magične bajtove, zaglavlja ni podnožja. Koristi LZ77 algoritam u kombinaciji s Huffmanovim kodiranjem za izravnu pohranu komprimiranih blokova. Pretvorba između njih u potpunosti je bez gubitaka, budući da oba formata koriste potpuno isti motor za kompresiju DEFLATE. Proces pretvorbe jednostavno odmotava GZIP omot, odbacuje metapodatke i ekstrahira unutarnji DEFLATE bajt stream.
Kompatibilnost s OS-om i preglednikom
Sirovi DEFLATE streamovi rade izvorno na modernim operativnim sustavima i radnim okruženjima putem standardnih programskih jezika kao što su Python, Node.js i C++. Preglednici upravljaju DEFLATE-om izvorno putem stoga zaglavlja HTTP kodiranja sadržaja. Operativni sustavi poput Windowsa, macOS-a i Linuxa podržavaju sirove streamove putem sustavskih biblioteka za kompresiju kao što je zlib. Mobilne platforme uključujući Android i iOS pružaju izravan API pristup rutinama DEFLATE za prilagođene slojeve pohrane aplikacija.
💡 Korisne informacije
Uvijek provjerite očekuje li vaš ciljni analizator čisti RFC 1951 stream umjesto streama omotanog u zlib, jer zlib dodaje dvobajtno zaglavlje koje će analizatori sirovog DEFLATE-a odbiti.
Usporedba formata i tehničke specifikacije
Tekstualna datoteka veličine 10 megabajta komprimirana u GZIP stream smanjuje se na otprilike 2 megabajta. Uklanjanjem zaglavlja i podnožja radi stvaranja sirove DEFLATE datoteke dobiva se identična veličina sadržaja od 2 megabajta. Prijenos ove datoteke od 2 megabajta traje oko 0,04 sekunde na optičkoj vezi od 500 Mbps, otprilike 0,4 sekunde na standardnoj 5G mreži i oko 4 sekunde na preopterećenoj 4G mobilnoj vezi.
Često postavljana pitanja
Kako pretvoriti GZIP stream u sirovi DEFLATE bez gubitka kvalitete?
Oba formata koriste identične algoritme kompresije bez gubitaka. Njihovo pretvaranje jednostavno znači čitanje GZIP spremnika, uklanjanje zaglavlja od deset bajtova i podnožja od osam bajtova te spremanje unutarnjih komprimiranih blokova. Nijedan podatak nije izgubljen jer temeljni algoritam ostaje nepromijenjen.
Koja je razlika između GZIP streama i sirovog DEFLATE-a?
GZIP je potpuni spremnik datoteke koji uključuje zaglavlje magičnog bajta, izvorne nazive datoteka, vremenske oznake izmjene i podnožje kontrolnog zbroja. Sirovi DEFLATE je samo komprimirani podatak, koji ne sadrži zaglavlja, podnožja ni metapodatke datoteke.