DEFLATE גולמי (.deflate)
IETF תקןDEFLATE הוא אלгоритם דחיסת הנתונים ללא איoss (ללא אובדן נתונים) הנפוץ ביותר בהיסטוריה של המחשוב, המניע ארכיוני ZIP, זרימות GZIP, תמונות PNG ודחיסת אינטרנט HTTP במשך למעלה משלושה עשורים.
המר GZIP ל-DEFLATE
ממיר חינמי מ-GZIP ל-DEFLATE פועל בדפדפן. המר קבצים באופן מיידי במכשיר שלך.
בדיקה ומטא-דאטה
מערכות הפעלה ומנתחי קבצים מזהים קבצי DEFLATE על ידי בדיקת רצף הבייטים הבינארי הראשוני:
חתימת כותרת ברמת הבייט (Magic Bytes)
מערכות הפעלה ומנתחי קבצים מזהים קבצי DEFLATE על ידי בדיקת רצף הבייטים הבינארי הראשוני:
חתימת HEX (היסט 0):
78 9C / 78 01 / 78 DAייצוג ASCII: xœ / x. / xÚ
תקינה: IETF RFC 1951 / RFC 1950 (zlib)
מפרט טכני
| ארכיטקטורת מעטפת | Raw RFC 1951 bitstream or RFC 1950 zlib-wrapped stream with 2-byte header and Adler-32 checksum |
| דחיסה | LZ77 sliding dictionary (up to 32 KB window) combined with dynamic/static Huffman entropy coding |
| סדר בתים (Endianness) | Little-Endian bit-packing order |
| מרחבי צבע | N/A (Data Compression Stream) |
| ערוצים ומבנה | Raw binary or text data stream |
| ממדים מרביים | Unbounded stream length |
| שקיפות | 100% bit-exact lossless data reproduction |
| הזרמה ופרוגרסיביות | Block-based bitstream supports arbitrary continuous byte streaming |
מטריצת השוואה טכנית: DEFLATE מול מתחרים
| תכונה טכנית | DEFLATE (נוכחי) | GZ | BROTLI | ZSTD |
|---|---|---|---|---|
| תקינה (Standardization) | IETF RFC 1951 (גלמי) / RFC 1950 (zlib) | IETF RFC 1952 (Gzip) | IETF RFC 7932 (Brotli) | IETF RFC 8878 (Zstandard) |
| חלון גולש (Sliding Window) | 32 קילובייט מקסימום | 32 קילובייט מקסימום | עד 16 מגה-בייט | עד 2 ג'יגה-בייט |
| מצב בדיקת תקינות (Checksum Mode) | Adler-32 (במעטפת zlib) | CRC-32 (במעטפת gzip) | ללא זרימה מובנית | xxHash64 (האש מהיר 64-סיביות) |
| שימוש יומיומי (Everyday Usage) | תמונות PNG, זרימות PDF, קבצי ZIP | Unix .tar.gz, HTTP gzip | גופני אינטרנט (WOFF2), HTTP br | לינוקס קרנל, במסדי נתונים, במשחקים |
מצבי שיחשות נפוצים ומדריך שחזור הקסדצימלי (Hex)
שחרור הדחיסה נכשל עם השגיאה 'Z_DATA_ERROR: incorrect data check'.
גורם שורש: אי-התאמה בבדיקת תקינות Adler-32 בת 4 הבייטים בסוף הזרימה העטופה ב-zlib.
התאוששות: עקוף את אימות Adler-32 באמצעות פריקה גולמית או תקן באמצעות שחזור Deflate של File2File.
ניתוח אבטחה ווקטורי התקפה על מנתחים (Parsers)
מנתחי DEFLATE חייבים לאמת בקפדנות קודי בניית עצי האפמן (Huffman) כדי למנוע כתיבת מצביעים מחוץ לגבולות הזיכרון.
ווקטורי תקיפה ידועים
- טבלאות אורך סיביות של עץ האפמן דינמי חלקיות או חורגות הגורמות לקריאות זיכרון לא חוקיות.
- פצצת דחיסה (Zip bomb) המרחיבה מטען זעיר למאות ג'יגה-בייט של זיכרון RAM.
- קריאת יתר של חוצץ (Buffer over-read) בקודי מרחק חלון גולש שאינם מאומתים.
השיטות המומלצות להגנה:
היסטוריה ואבני דרך
יתרונות מרכזיים
- התקן העולמי הבלתי מעורער: ממומש בחומרה, במערכות הפעלה ובכל בסביבת ריצה תכנותית.
- עיצוב ללא פטנטים וללא תמלוגים המבטיח גישה פתוחה בכל תעשיית המחשוב.
- שחרור דחיסה מהיר עם טביעת רגל זיכרון מינימלית (דורש רק 32 קילובייט של זיכרון חלון גולש).
מגבלות טכניות וחסרונות
- חלון גולש מוגבל ל-32 קילובייט, מה שמפחית את יעילות הדחיסה בקבצים גדולים עם חזרתיות רחוקה.
- יחס דחיסה נמוך יותר בנכסי אינטרנט מודרניים בהשוואה לאלגוריתמים חדשים יותר כמו Brotli ו-Zstandard.
- זרימות DEFLATE גולמיות חסרות מטא-דאטה מתאר עצמי או מעטפת קונטיינר ללא מעטפות zlib או gzip.
עובדות טכניות מעניינות
- פיל כץ המציא את DEFLATE לאחר שנתבע על ידי חברת Unisys בגין אלגוריתם LZW המוגנת בפטנט ששימש בכלי עזר מוקדמים של PKARC.
- בייטים של כותרת zlib סטנדרטית '78 9C' מציינים דחיסה ברירת מחדל, '78 01' דחיסה נמוכה, ו-'78 DA' דחיסה מקסימלית.
- כל תמונת PNG בכדור הארץ משתמשת ב-DEFLATE כדי לדחוס את מקטעי הפיקסלים IDAT שלה.
שאלות טכניות נפוצות
מה ההבדל בין DEFLATE, zlib ו-gzip?
DEFLATE הוא אלגוריתם הדחיסה הגולמי (RFC 1951). Zlib עוטף את DEFLATE עם כותרת בת 2 בייטים ובדיקת Adler-32 (RFC 1950). Gzip עוטף את DEFLATE עם מטא-נתונים של הקובץ ובדיקת CRC-32 (RFC 1952).
מדוע PNG משתמש ב-DEFLATE?
פורמט PNG נוצר ב-1995 כדי להחליף את GIF מבלי להשתמש באלגוריתמי LZW המוגנים בפטנט, ובחר ב-DEFLATE הפתוח והחופשי מתמלוגים לצורך דחיסה.
כיצד אוכל לפענח קובץ .deflate גולמי?
ניתן לפענח זרמי בייטים גולמיים של DEFLATE או zlib לקבצים המקוריים הלא דחוסים באמצעות File2File.app ישירות בדפדפן האינטרנט שלך.
זוגות המרה קשורים ל-DEFLATE
המרת זרם GZIP לזרם DEFLATE גולמי מסירה את מעטפת הקובץ החיצונית ואת מטא-נתוני הכותרת, ומשאירה אך ורק את המטען הדחוס עבור פרוטוקולי רשת ייעודיים וארכיונים ברמה נמוכה.
המרת זרם DEFLATE גולמי לזרם GZIP עוטפת את המטען הדחוס בתוך מיכל סטנדרטי עם כותרות מטא-דאטה כך שמערכות הפעלה וכלי אינטרנט יוכלו לקרוא אותו כראוי.