DEFLATE גולמי (.deflate)
IETF תקןDEFLATE הוא אלגוריתם דחיסת הנתונים ללא אובדן נתונים נפוץ בהיסטוריה של המחשוב, המניע ארכיוני ZIP, זרימות GZIP, תמונות PNG ודחיסת אינטרנט HTTP במשך למעלה משלושה עשורים.
המר GZIP ל-DEFLATE
ממיר חינמי מ-GZIP ל-DEFLATE פועל בדפדפן. המר קבצים באופן מיידי במכשיר שלך.
בדיקה ומטא-נתונים
מערכות הפעלה ומנתחי קבצים מזהים קבצי DEFLATE על ידי בדיקת רצף הבייטים הבינארי הראשוני:
חתימת כותרת ברמת הבייט (Magic Bytes)
מערכות הפעלה ומנתחי קבצים מזהים קבצי DEFLATE על ידי בדיקת רצף הבייטים הבינארי הראשוני:
חתימת HEX (היסט 0):
ל-DEFLATE גולמי אין חתימה קבועה; זרמים עטופי zlib מתחילים בבייטים משתנים של CMF/FLGייצוג ASCII: אין חתימת ASCII קבועה
תקינה: IETF RFC 1951 / RFC 1950 (zlib)
מפרט טכני
| מבנה המכולה | זרם סיביות גולמי של RFC 1951 או זרם עטוף zlib של RFC 1950, עם כותרת בת 2 בתים וסכום ביקורת Adler-32 |
| דחיסה | מילון הזזה LZ77 (חלון של עד 32 KB) בשילוב קידוד אנטרופיה דינמי או סטטי של Huffman |
| סדר בתים (Endianness) | סדר אריזת סיביות Little-Endian |
| מרחבי צבע | לא רלוונטי (זרם דחיסת נתונים) |
| ערוצים ומבנה | זרם נתונים בינאריים או טקסט גולמי |
| ממדים מרביים | אורך זרם בלתי מוגבל |
| שקיפות | שחזור נתונים ללא אובדן, בדיוק של 100% ברמת הסיביות |
| הזרמה ופרוגרסיביות | זרם סיביות מבוסס בלוקים התומך בהזרמת בתים רציפה בכל אורך |
מטריצת השוואה טכנית: DEFLATE מול מתחרים
| תכונה טכנית | DEFLATE (נוכחי) | GZ | BROTLI | ZSTD |
|---|---|---|---|---|
| תקינה | IETF RFC 1951 (גלמי) / RFC 1950 (zlib) | IETF RFC 1952 (Gzip) | IETF RFC 7932 (Brotli) | IETF RFC 8878 (Zstandard) |
| חלון הזזה | 32 קילובייט מקסימום | 32 קילובייט מקסימום | עד 16 מגה-בייט | עד 2 ג'יגה-בייט |
| מצב בדיקת תקינות | Adler-32 (במעטפת zlib) | CRC-32 (במעטפת gzip) | ללא זרימה מובנית | xxHash64 (גיבוב מהיר של 64 סיביות) |
| שימושים נפוצים | תמונות PNG, זרימות PDF, קבצי ZIP | Unix .tar.gz, HTTP gzip | גופני אינטרנט (WOFF2), HTTP br | בליבת Linux, במסדי נתונים ובמשחקים |
מצבי השחתה נפוצים ומדריך שחזור הקסדצימלי (Hex)
שחרור הדחיסה נכשל עם השגיאה 'Z_DATA_ERROR: incorrect data check'.
גורם שורש: אי-התאמה בבדיקת תקינות Adler-32 בת 4 הבייטים בסוף הזרימה העטופה ב-zlib.
שחזור: עקוף את אימות Adler-32 באמצעות פריקה גולמית או תקן באמצעות שחזור Deflate של File2File.app.
ניתוח אבטחה ווקטורי תקיפה נגד מנתחי פורמטים (parsers)
מנתחי DEFLATE חייבים לאמת בקפדנות קודי בניית עצי האפמן (Huffman) כדי למנוע כתיבת מצביעים מחוץ לגבולות הזיכרון.
ווקטורי תקיפה ידועים
- טבלאות חלקיות או חורגות של אורכי הסיביות בעץ האפמן הדינמי, הגורמות לקריאות זיכרון לא חוקיות.
- פצצת דחיסה (Zip bomb) המרחיבה מטען זעיר למאות ג'יגה-בייט של זיכרון RAM.
- קריאת יתר של חוצץ (Buffer over-read) בקודי מרחק חלון גולש שאינם מאומתים.
שיטות מומלצות להגנה: הגבל את הקצאת הזיכרון המרבית ומגבלות יחס התרחבות במהלך שחרור הדחיסה.
היסטוריה ואבני דרך
יתרונות מרכזיים
- ספריות תוכנה ופורמטים רבים מממשים DEFLATE, אך התמיכה הזמינה תלויה בסביבת הריצה ובאפליקציה.
- אפשר לממש את מפרט DEFLATE בחופשיות; הרישוי והתמיכה תלויים במימוש התוכנה המסוים.
- פריסה מהירה עם צריכת זיכרון מינימלית (דורשת רק 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 עוטפת את המטען הדחוס בתוך מיכל סטנדרטי עם כותרות מטא-דאטה כך שמערכות הפעלה וכלי אינטרנט יוכלו לקרוא אותו כראוי.