DEFLATE خام (.deflate)
IETF استانداردالگوریتم DEFLATE رایجترین الگوریتم فشردهسازی داده بدون افت (lossless) در تاریخ محاسبات است که بیش از سه دهه است که آرشیوهای 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 |
|---|---|---|---|---|
| استانداردسازی | IETF RFC 1951 (خام) / RFC 1950 (zlib) | IETF RFC 1952 (Gzip) | IETF RFC 7932 (Brotli) | IETF RFC 8878 (Zstandard) |
| پنجره لغزان | حداکثر ۳۲ کیلوبایت | حداکثر ۳۲ کیلوبایت | تا ۱۶ مگابایت | تا ۲ گیگابایت |
| حالت چکسام | Adler-32 (در پوشش zlib) | CRC-32 (در پوشش gzip) | بدون جریان داخلی | xxHash64 (هش سریع ۶۴ بیتی) |
| استفاده روزمره | تصاویر PNG، جریانهای PDF، ZIP | Unix .tar.gz، HTTP gzip | فونتهای وب (WOFF2)، HTTP br | هسته لینوکس، پایگاههای داده، بازی |
حالتهای رایج خرابی و راهنمای بازیابی هگز
خارجسازی با خطای 'Z_DATA_ERROR: incorrect data check' ناموفق است.
علت ریشهای: عدم تطابق در چکسام ۴ بایتی Adler-32 در انتهای جریان پوششدادهشده با zlib.
بازیابی: اعتبارسنجی Adler-32 را با استفاده از inflate خام دور بزنید یا با ابزار بازیابی Deflate در File2File تعمیر کنید.
تحلیل امنیتی و بردارهای حمله تجزیهکننده (Parser)
تجزیهکنندههای DEFLATE باید کدهای ساخت درخت هافمن را به شدت اعتبارسنجی کنند تا از نوشتن پوینتر خارج از محدوده جلوگیری شود.
بردارهای حمله شناختهشده
- جداول طول بیت درخت هافمن پویا ناقص یا بیش از حد مشترک که منجر به خواندن حافظه نامعتبر میشود.
- بمب فشردهسازی (zip bomb) که محمولههای بسیار کوچک را به صدها گیگابایت رم گسترش میدهد.
- خواندن بیش از حد بافر (Buffer over-read) در کدهای فاصله پنجره لغزان اعتبارسنجی نشده.
بهترین روشهای پدافندی:
تاریخچه و نقاط عطف
مزایا و نقاط قوت کلیدی
- استاندارد جهانی بیچون و چرا: پیادهسازی شده در سختافزار، سیستمعاملها و هر محیط اجرایی برنامهنویسی.
- طراحی بدون نیاز به حق امتیاز و پتنت که دسترسی آزاد را در کل صنعت محاسبات تضمین میکند.
- خارجسازی سریع با حداقل مصرف حافظه (فقط به ۳۲ کیلوبایت حافظه پنجره لغزان نیاز دارد).
محدودیتها و معایب فنی
- پنجره لغزان محدود به ۳۲ کیلوبایت، که اثربخشی فشردهسازی را روی فایلهای بزرگ با تکرارهای دور کاهش میدهد.
- نسبت فشردهسازی کمتر روی داراییهای وب مدرن در مقایسه با الگوریتمهای جدیدتر مانند Brotli و Zstandard.
- جریانهای خام DEFLATE فاقد متادیتای خودتوصیفگر یا قاببندی کانتینر بدون پوششهای zlib یا gzip هستند.
نکات فنی جالب
- فیل کاتز پس از شکایت شرکت Unisys به دلیل الگوریتم پتنتشده LZW مورد استفاده در ابزارهای اولیه PKARC، الگوریتم DEFLATE را اختراع کرد.
- بایتهای سریند استاندارد zlib یعنی '78 9C' نشاندهنده فشردهسازی پیشفرض، '78 01' فشردهسازی کم و '78 DA' حداکثر فشردهسازی هستند.
- هر تصویر PNG روی کره زمین از DEFLATE برای فشردهسازی قطعات پیکسلی IDAT خود استفاده میکند.
سوالات فنی متداول
تفاوت بین DEFLATE، zlib و gzip چیست؟
الگوریتم DEFLATE الگوریتم فشردهسازی خام است (استاندارد RFC 1951). کتابخانه Zlib الگوریتم DEFLATE را با یک هدر ۲ بایتی و مجموع بررسی Adler-32 پوشش میدهد (استاندارد RFC 1950). فرمت Gzip نیز DEFLATE را با متادیتای فایل و مجموع بررسی CRC-32 بستهبندی میکند (استاندارد RFC 1952).
چرا فرمت PNG از DEFLATE استفاده میکند؟
فرمت PNG در سال ۱۹۹۵ برای جایگزینی GIF بدون استفاده از الگوریتمهای پنتنتشده LZW ایجاد شد و برای فشردهسازی، فرمت باز و رایگان DEFLATE را انتخاب کرد.
چگونه میتوانم یک فایل خام .deflate را از حالت فشرده خارج کنم؟
شما میتوانید جریانهای بایت خام DEFLATE یا zlib را با استفاده از File2File.app مستقیماً در مرورگر وب خود به فایلهای اصلی فشردهنشده تبدیل کنید.
جفتهای تبدیل مرتبط با DEFLATE
تبدیل جریان GZIP به DEFLATE خام، پوشش فایل بیرونی و فراداده سرآیند را حذف میکند تا فقط بار مفید فشردهشده برای پروتکلهای شبکه تخصصی و آرشیوهای سطح پایین باقی بماند.
تبدیل جریان DEFLATE خام به جریان GZIP، محموله فشردهشده را در یک ظرف استاندارد با هدرهای فراداده بستهبندی میکند تا سیستمعاملها و ابزارهای وب بتوانند آن را به درستی بخوانند.