Raw DEFLATE (.deflate)
IETF ΤυπικόΤο DEFLATE είναι ο ευρέως χρησιμοποιούμενος αλγόριθμος συμπίεσης δεδομένων χωρίς απώλειες στην ιστορία της πληροφορικής, τροφοδοτώντας αρχεία ZIP, ροές GZIP, εικόνες PNG και συμπίεση ιστού HTTP για πάνω από τρεις δεκαετίες.
Μετατροπή GZIP σε DEFLATE
Δωρεάν μετατροπέας από GZIP σε DEFLATE εντός του προγράμματος περιήγησης. Μετατρέψτε αρχεία άμεσα στη συσκευή σας.
Επιθεώρηση & Μεταδεδομένα
Τα λειτουργικά συστήματα και τα εργαλεία ανάλυσης αρχείων αναγνωρίζουν τα αρχεία DEFLATE ελέγχοντας την αρχική δυαδική ακολουθία byte:
Υπογραφή κεφαλίδας σε επίπεδο byte (Magic Bytes)
Τα λειτουργικά συστήματα και τα εργαλεία ανάλυσης αρχείων αναγνωρίζουν τα αρχεία DEFLATE ελέγχοντας την αρχική δυαδική ακολουθία byte:
ΔΕΚΑΕΞΑΔΙΚΗ ΥΠΟΓΡΑΦΗ (OFFSET 0):
Δεν υπάρχει σταθερή υπογραφή για ακατέργαστο DEFLATE· οι ροές με περίβλημα zlib αρχίζουν με μεταβλητά byte CMF/FLGΑΝΑΠΑΡΑΣΤΑΣΗ ASCII: Δεν υπάρχει σταθερή υπογραφή
Τυποποίηση: IETF RFC 1951 / RFC 1950 (zlib)
Τεχνικές Προδιαγραφές
| Αρχιτεκτονική Περιέκτη | Ακατέργαστη ροή bit RFC 1951 ή ροή περιτυλιγμένη σε zlib RFC 1950 με κεφαλίδα 2 byte και άθροισμα ελέγχου Adler-32 |
| Συμπίεση | Συρόμενο λεξικό LZ77 (παράθυρο έως 32 KB) σε συνδυασμό με στατική ή δυναμική κωδικοποίηση εντροπίας Huffman |
| Σειρά byte (endianness) | Διάταξη συσκευασίας bit μικρής διάταξης (Little-Endian) |
| Χρωματικοί Χώροι | N/A (Data Compression Stream) |
| Κανάλια & Δομή | Ροή ακατέργαστων δυαδικών ή κειμενικών δεδομένων |
| Μέγιστες Διαστάσεις | Απεριόριστο μήκος ροής |
| Διαφάνεια | 100% αναπαραγωγή δεδομένων χωρίς απώλειες και με ακρίβεια bit |
| Ροή δεδομένων και προοδευτική φόρτωση | Ροή bit βασισμένη σε μπλοκ, με υποστήριξη συνεχούς μετάδοσης byte αυθαίρετου μήκους |
Τεχνικός Πίνακας Σύγκρισης: DEFLATE έναντι Ανταγωνιστών
| Τεχνικό χαρακτηριστικό | DEFLATE (Τρέχον) | GZ | BROTLI | ZSTD |
|---|---|---|---|---|
| Τυποποίηση | IETF RFC 1951 (Raw) / RFC 1950 (zlib) | IETF RFC 1952 (Gzip) | IETF RFC 7932 (Brotli) | IETF RFC 8878 (Zstandard) |
| Κυλιόμενο Παράθυρο | Μέγιστο 32 kilobytes | Μέγιστο 32 kilobytes | Έως 16 megabytes | Έως 2 gigabytes |
| Λειτουργία Αθροίσματος Ελέγχου | Adler-32 (στο περιτύλιγμα zlib) | CRC-32 (στο περιτύλιγμα gzip) | Δεν υπάρχει ενσωματωμένο άθροισμα ελέγχου στη ροή | xxHash64 (γρήγορο hash 64-bit) |
| Καθημερινή Χρήση | Εικόνες PNG, ροές PDF, ZIP | Unix .tar.gz, HTTP gzip | Γραμματοσειρές ιστού (WOFF2), HTTP br | Πυρήνας Linux, βάσεις δεδομένων, παιχνίδια |
Συνήθεις τρόποι καταστροφής δεδομένων και οδηγός ανάκτησης δεκαεξαδικών δεδομένων
Η αποσυμπίεση αποτυγχάνει με το μήνυμα 'Z_DATA_ERROR: incorrect data check'.
Βασική Αιτία: Ασυμφωνία στο άθροισμα ελέγχου Adler-32 4-byte στο τέλος της ροής που είναι τυλιγμένη σε zlib.
Ανάκτηση: Παρακάμψτε την επαλήθευση Adler-32 χρησιμοποιώντας ακατέργαστη αποσυμπίεση (raw inflate) ή επιδιορθώστε με το File2File.app Deflate Recovery.
Ανάλυση ασφάλειας και διανύσματα επίθεσης στον αναλυτή
Οι αναλύτες (parsers) DEFLATE πρέπει να επικυρώνουν αυστηρά τους κωδικούς δόμησης δέντρου Huffman για να αποτρέψουν εγγραφές δεικτών εκτός ορίων.
Γνωστά διανύσματα επίθεσης
- Ελλιπείς ή υπερπλήρεις δυναμικοί πίνακες μήκους bit δέντρου Huffman που προκαλούν μη έγκυρες αναγνώσεις μνήμης.
- Βόμβα αποσυμπίεσης (zip bomb) που επεκτείνει μικροσκοπικά ωφέλιμα φορτία σε εκατοντάδες gigabyte RAM.
- Υπερανάγνωση buffer (buffer over-read) σε μη επικυρωμένους κωδικούς απόστασης κυλιόμενου παραθύρου.
Βέλτιστες αμυντικές πρακτικές: Επιβολή περιορισμένων ορίων μέγιστης κατανομής μνήμης και ανώτατων ορίων λόγου επέκτασης κατά την αποσυμπίεση.
Ιστορική Αναδρομή & Ορόσημα
Κύρια Πλεονεκτήματα
- Το DEFLATE έχει υλοποιηθεί ευρέως σε βιβλιοθήκες λογισμικού και μορφότυπους αρχείων, αν και η διαθέσιμη υποστήριξη εξαρτάται από το περιβάλλον εκτέλεσης και την εφαρμογή.
- Οι προδιαγραφές του DEFLATE μπορούν να υλοποιηθούν ελεύθερα· η αδειοδότηση και η υποστήριξη εξαρτώνται από τη συγκεκριμένη υλοποίηση λογισμικού.
- Γρήγορη αποσυμπίεση με ελάχιστο αποτύπωμα μνήμης (απαιτεί μόνο 32 KB μνήμης κυλιόμενου παραθύρου).
Τεχνικοί Περιορισμοί & Μειονεκτήματα
- Το κυλιόμενο παράθυρο (sliding window) περιορίζεται στα 32 KB, μειώνοντας την αποτελεσματικότητα συμπίεσης σε μεγάλα αρχεία με απομακρυσμένες επικαλύψεις.
- Χαμηλότεροι λόγοι συμπίεσης σε σύγχρονα στοιχεία ιστού σε σύγκριση με νεότερους αλγορίθμους όπως το Brotli και το Zstandard.
- Οι ακατέργαστες ροές DEFLATE στερούνται μεταδεδομένων αυτοπεριγραφής ή πλαισίου περιέκτη (container) χωρίς τα περιτυλίγματα zlib ή gzip.
Ενδιαφέροντα Τεχνικά Στοιχεία
- Ο Phil Katz εφηύρε το DEFLATE αφού μηνύθηκε από την Unisys για τον κατοχυρωμένο με δίπλωμα ευρεσιτεχνίας αλγόριθμο LZW που χρησιμοποιούνταν στα πρώτα βοηθητικά προγράμματα PKARC.
- Τα τυπικά byte κεφαλίδας zlib '78 9C' υποδεικνύουν προεπιλεγμένη συμπίεση, το '78 01' χαμηλή συμπίεση και το '78 DA' μέγιστη συμπίεση.
- Το PNG χρησιμοποιεί το DEFLATE για τη ροή δεδομένων εικόνας, όπως ορίζεται στις προδιαγραφές του μορφότυπου PNG.
Συχνές Τεχνικές Ερωτήσεις
Ποια είναι η διαφορά μεταξύ DEFLATE, zlib και gzip;
Το DEFLATE είναι ο ακατέργαστος αλγόριθμος συμπίεσης (RFC 1951). Το Zlib τυλίγει το DEFLATE με κεφαλίδα 2 byte και άθροισμα ελέγχου Adler-32 (RFC 1950). Το Gzip τυλίγει το DEFLATE με μεταδεδομένα αρχείου και άθροισμα ελέγχου CRC-32 (RFC 1952).
Γιατί το PNG χρησιμοποιεί το DEFLATE;
Η μορφή PNG δημιουργήθηκε το 1995 για να αντικαταστήσει το GIF χωρίς τη χρήση κατοχυρωμένων με δίπλωμα ευρεσιτεχνίας αλγορίθμων LZW, επιλέγοντας το ανοιχτό, χωρίς δικαιώματα DEFLATE για συμπίεση.
Πώς μπορώ να αποσυμπιέσω ένα ακατέργαστο αρχείο .deflate;
Μπορείτε να αποσυμπιέσετε ακατέργαστες ροές byte DEFLATE ή zlib σε πρωτότυπα ασυμπίεστα αρχεία χρησιμοποιώντας το File2File.app απευθείας στο πρόγραμμα περιήγησής σας.
Σχετικά ζεύγη μετατροπής για DEFLATE
Η μετατροπή μιας ροής GZIP σε ακατέργαστο DEFLATE αφαιρεί το εξωτερικό περίβλημα του αρχείου και τα μεταδεδομένα της κεφαλίδας, αφήνοντας μόνο το συμπιεσμένο ωφέλιμο φορτίο για εξειδικευμένα πρωτόκολλα δικτύου και αρχεία χαμηλού επιπέδου.
Η μετατροπή ακατέργαστου DEFLATE σε ροή GZIP περιβάλλει το συμπιεσμένο ωφέλιμο φορτίο με ένα τυπικό δοχείο που περιλαμβάνει κεφαλίδες μεταδεδομένων, ώστε τα λειτουργικά συστήματα και τα εργαλεία ιστού να μπορούν να το διαβάζουν σωστά.