DEFLATE خام (.deflate)

IETF استاندارد

الگوریتم DEFLATE رایج‌ترین الگوریتم فشرده‌سازی داده بدون افت (lossless) در تاریخ محاسبات است که بیش از سه دهه است که آرشیوهای ZIP، جریان‌های GZIP، تصاویر PNG و فشرده‌سازی وب HTTP را پشتیبانی می‌کند.

تبدیل GZIP به DEFLATE

مبدل رایگان GZIP به DEFLATE درون مرورگر. فایل‌ها را فورا روی دستگاه خود تبدیل کنید.

بررسی و فراداده

سیستم‌عامل‌ها و تحلیلگرهای فایل، فایل‌های DEFLATE را با بررسی توالی بایت‌های دودویی ابتدایی شناسایی می‌کنند:

انتخاب یا رها کردن فایل‌ها در اینجا

تبدیل ۱۰۰٪ خصوصی در مرورگر - فایل‌ها هرگز دستگاه شما را ترک نمی‌کنند

یا جای‌گذاری کنید Ctrl+V
تضمین حریم خصوصی بدون انتقال شبکه: صفر بایت به سرورهای خارجی آپلود می‌شود. تمام پردازش‌ها به صورت محلی در سندباکس مرورگر شما انجام شد.

امضای هدر در سطح بایت (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 (فعلی)GZBROTLIZSTD
استانداردسازی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، ZIPUnix .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) در کدهای فاصله پنجره لغزان اعتبارسنجی نشده.

بهترین روش‌های پدافندی:

تاریخچه و نقاط عطف

1996پیتر دویچ (Peter Deutsch) الگوریتم DEFLATE را به عنوان استاندارد IETF RFC 1951 و zlib را به عنوان RFC 1950 رسمی کرد.
1995ژان-لوپ گالی (Jean-loup Gailly) و مارک آدلر (Mark Adler) کتابخانه zlib را که کتابخانه مرجع جهانی C برای DEFLATE است، منتشر کردند.
1991فیل کاتز (Phil Katz) الگوریتم DEFLATE را برای PKZIP 2.0 اختراع کرد تا جایگزین الگوریتم‌های قدیمی‌تر Implode و Reduce شود.

مزایا و نقاط قوت کلیدی

  • استاندارد جهانی بی‌چون و چرا: پیاده‌سازی شده در سخت‌افزار، سیستم‌عامل‌ها و هر محیط اجرایی برنامه‌نویسی.
  • طراحی بدون نیاز به حق امتیاز و پتنت که دسترسی آزاد را در کل صنعت محاسبات تضمین می‌کند.
  • خارج‌سازی سریع با حداقل مصرف حافظه (فقط به ۳۲ کیلوبایت حافظه پنجره لغزان نیاز دارد).

محدودیت‌ها و معایب فنی

  • پنجره لغزان محدود به ۳۲ کیلوبایت، که اثربخشی فشرده‌سازی را روی فایل‌های بزرگ با تکرارهای دور کاهش می‌دهد.
  • نسبت فشرده‌سازی کمتر روی دارایی‌های وب مدرن در مقایسه با الگوریتم‌های جدیدتر مانند 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 مستقیماً در مرورگر وب خود به فایل‌های اصلی فشرده‌نشده تبدیل کنید.