Muunna GZIP muotoon Deflate
GZIP-virran muuntaminen raakaksi DEFLATE-muodoksi poistaa ulkoisen tiedostokääreen ja otsikon metatiedot ja jättää jäljelle vain pakatun hyötykuorman erikoistuneita verkkoprotokollia ja matalan tason arkistoja varten.
Muotojen vertailu ja tekniset tiedot
| Määritys | GZIP | DEFLATE |
|---|---|---|
| MIME-tyyppi | application/ | application/ |
| Tyyppi | DEFLATE-virran säiliömuoto | raaka DEFLATE-virta |
| Pakkaus | DEFLATE (RFC 1951) | LZ77 + Huffman-koodaus |
| Standardimääritys | IETF RFC 1952 | IETF RFC 1950 / RFC 1951 |
| Tiedostotunniste (Magic Bytes) | 1F 8B (gzip ID1/ID2) | 78 01 / 78 9C / 78 DA (zlib header bytes) |
Muodon yleiskatsaus ja käyttökohteet
GZIP-virran muuntaminen raakaksi DEFLATE-muodoksi tapahtuu usein verkkokehityksessä, verkko-ohjelmoinnissa ja matalan tason datan tallennuksen työnkuluissa. Kehittäjät käsittelevät GZIPiä usein tallentaessaan yksittäisiä tiedostoja levylle, koska muoto sisältää hyödyllisiä metatietoja, kuten alkuperäiset tiedostonimet ja muokkausaikaleimat. Nykyaikaiset HTTP-pakkausprotokollat ja tietyt binaarimuodot odottavat kuitenkin vain pakattua hyötykuormaa ilman mitään kääretavuja. Tämän muunnoksen suorittaminen mahdollistaa sen, että insinöörit voivat syöttää tavallista pakattua dataa suoraan verkkovirtoihin tai mukautettuihin jäsennysimiin. Esimerkiksi mukautetun HTTP-vastaustenkäsittelijän rakentaminen tai ZIP-arkistojen kanssa työskentely edellyttää usein GZIP-otsikon ja CRC32-alatunnisteen poistamista raa'an algoritmituloksen eristämiseksi. Tämän ylimääräisen säiliödatan poistaminen vähentää yleiskuormitusta silloin, kun jokaisella tavulla on väliä rajoitetuissa ohjelmointiympäristöissä.
Tekniset tiedot ja koodekkien erittely
application/gzip-MIME-tyypin mukainen GZIP-virta käyttää RFC 1952:ssa määriteltyä säiliörakennetta. Se alkaa kaksitavuisella tunnisteella (0x1F, 0x8B), jota seuraavat pakkausliput, muokkausaika, käyttöjärjestelmän tunniste ja mahdollinen tiedostonimi. Pakattu data on keskellä tiedostoa. Lopussa on nelitavuinen CRC32-tarkistussumma ja nelitavuinen pakkaamattoman koon ilmaisin. Raaka DEFLATE puolestaan on RFC 1951:n mukainen bittivirta, jossa ei ole kiinteää tunnistetta, kehysotsaketta eikä alatunnistetta. application/zlib-MIME-tyyppi tarkoittaa RFC 1950:n mukaista zlib-käärettä DEFLATEn ympärillä, ei raakaa DEFLATE-virtaa. Muunnoksessa poistetaan GZIP-metatiedot ja tarkistussumma, mutta pakattu hyötykuorma säilytetään.
Käyttöjärjestelmien ja selaimien yhteensopivuus
Raaka DEFLATE toimii natiivisti nykyaikaisissa käyttöjärjestelmissä ja verkkosuoritusympäristöissä tavallisten ohjelmointikielten, kuten Pythonin, Node.js:n ja C++:n, kautta. Selaimet käsittelevät DEFLATEa natiivisti HTTP Content-Encoding -otsakkeen avulla. Windows, macOS ja Linux tukevat raakavirtoja esimerkiksi zlibin kaltaisten järjestelmäkirjastojen kautta. Android ja iOS tarjoavat sovellusliittymät DEFLATE-rutiineihin mukautettuja sovellusten tallennuskerroksia varten.
Hyödyllistä tietoa
Varmista aina, että kohdejäsentimesi odottaa puhdasta RFC 1951 -virtaa eikä zlib-käärittyä virtaa, koska zlib lisää kaksitavuisen otsikon, jonka raa'at DEFLATE-jäsennysimet hylkäävät.
Usein kysytyt kysymykset
Miten GZIP-virta muunnetaan raakaksi DEFLATE-muodoksi laatua menettämättä?
Molemmat muodot käyttävät identtisiä häviöttömiä pakkausalgoritmeja. Niiden muuntaminen tarkoittaa yksinkertaisesti GZIP-säiliön lukemista, kymmentavuisen otsikon ja kahdeksantavuisen alatunnisteen poistamista ja sisempien pakattujen lohkojen tallentamista. Dataa ei menetetä, koska taustalla oleva algoritmi pysyy muuttumattomana.
Mikä ero on GZIP-virralla ja raa'alla DEFLATE-muodolla?
GZIP on täydellinen tiedostosäiliö, joka sisältää taikamerkkiotsikon, alkuperäiset tiedostonimet, muokkausaikaleimat ja tarkistussumma-alatunnisteen. Raaka DEFLATE on pelkkää pakattua dataa, joka ei sisällä otsikoita, alatunnisteita eikä tiedoston metatietoja.