Konwerter Deflate na GZIP
Konwersja surowego strumienia DEFLATE na strumień GZIP pakuje skompresowany ładunek w standardowy kontener z nagłówkami metadanych, dzięki czemu systemy operacyjne i narzędzia sieciowe mogą go poprawnie odczytać.
Porównanie formatów i specyfikacja techniczna
| Specyfikacja | DEFLATE | GZIP |
|---|---|---|
| Typ MIME | application/ | application/ |
| Typ | surowy strumień DEFLATE | kontener strumienia DEFLATE |
| Kompresja | LZ77 + kodowanie Huffmana | DEFLATE (RFC 1951) |
| Standardowa specyfikacja | IETF RFC 1950 / RFC 1951 | IETF RFC 1952 |
| Nagłówek z bajtami identyfikującymi | 78 01 / 78 9C / 78 DA (zlib header bytes) | 1F 8B (gzip ID1/ID2) |
Przegląd formatu i zastosowania
Surowe strumienie danych DEFLATE zawierają skompresowane bajty bez żadnych nagłówków plików ani sum kontrolnych. Przeglądarki internetowe i narzędzia sieciowe często mają problem z przetwarzaniem tych nagich strumieni, ponieważ brakuje im metadanych, takich jak oryginalne nazwy plików, znaczniki czasu modyfikacji czy identyfikatory systemów operacyjnych. Umieszczenie tych surowych danych w kontenerze GZIP rozwiązuje te problemy z kompatybilnością. Programiści napotykają surowe strumienie DEFLATE w protokołach sieciowych, takich jak kompresja HTTP, fragmenty obrazów PNG i archiwa ZIP. Kiedy te strumienie muszą zostać zapisane jako samodzielne pliki dla narzędzi wiersza poleceń lub standardowych pobrań z internetu, inżynierowie konwertują je do formatu GZIP. Zapewnia to, że narzędzia dekompresyjne natychmiast rozpoznają typ pliku i rozpakują zawartość bez zgłaszania błędów.
Specyfikacja techniczna i analiza kodeków
Surowy DEFLATE to strumień bitów zgodny z RFC 1951, który wykorzystuje dopasowywanie LZ77 i kodowanie Huffmana, bez nagłówków ramki ani stałej sygnatury. Typ MIME application/zlib oznacza strumień DEFLATE opakowany w zlib zgodnie z RFC 1950, a nie surowy DEFLATE. GZIP (application/gzip) umieszcza ładunek DEFLATE w kontenerze z nagłówkiem rozpoczynającym się bajtami 1F 8B i stopką zawierającą sumę kontrolną CRC32 oraz rozmiar danych po dekompresji modulo 2^32.
Zgodność z systemami operacyjnymi i przeglądarkami
Strumienie GZIP są szeroko obsługiwane w nowoczesnych systemach operacyjnych, w tym Linux, macOS i Windows. Narzędzia wiersza poleceń, takie jak gzip, gunzip i 7-Zip, natywnie odczytują pliki GZIP. Przeglądarki internetowe automatycznie dekompresują GZIP w odpowiedziach HTTP otrzymywanych z serwerów, natomiast obsługa surowego DEFLATE często wymaga własnego parsera w środowisku JavaScript lub module WebAssembly.
Przydatne informacje
Zawsze upewnij się, że narzędzie dekompresyjne poprawnie odczytuje stopkę GZIP, ponieważ uszkodzone końcowe sumy kontrolne CRC32 spowodują przerwanie działania narzędzi wyodrębniających, nawet jeśli zawarty w niej ładunek DEFLATE jest nienaruszony.
Często zadawane pytania
Jak przekonwertować surowy strumień DEFLATE na strumień GZIP bez utraty jakości?
Oba formaty wykorzystują kompresję bezstratną opartą na dokładnie tym samym algorytmie DEFLATE. Konwersja między nimi polega po prostu na dodaniu nagłówków kontenera i sum kontrolnych wokół istniejących skompresowanych bajtów, co oznacza, że podczas procesu pakowania nie dochodzi do żadnej utraty danych.
Czym różni się surowy strumień DEFLATE od strumienia GZIP?
Surowy DEFLATE zawiera tylko skompresowany ładunek bez żadnych identyfikujących nagłówków ani stopek. Strumień GZIP to znormalizowany kontener plików, który dodaje 10-bajtowy nagłówek i 8-bajtową stopkę z sumą kontrolną do surowych danych DEFLATE w celu śledzenia metadanych i wykrywania błędów.