مبدل جریان DEFLATE خام به جریان GZIP
تبدیل جریان DEFLATE خام به جریان GZIP، محموله فشردهشده را در یک ظرف استاندارد با هدرهای فراداده بستهبندی میکند تا سیستمعاملها و ابزارهای وب بتوانند آن را به درستی بخوانند.
مقایسه فرمتها و مشخصات فنی
| مشخصات | DEFLATE | GZIP |
|---|---|---|
| نوع MIME | application/zlib | application/gzip |
| نوع | raw DEFLATE stream | DEFLATE stream container |
| فشردهسازی | LZ77 + Huffman coding | DEFLATE (RFC 1951) |
| مشخصات استاندارد | IETF RFC 1950 / RFC 1951 | IETF RFC 1952 |
| هدر بایتهای جادویی | 78 01 / 78 9C / 78 DA (zlib header bytes) | 1F 8B (gzip ID1/ID2) |
نمای کلی فرمت و کاربردها
جریانهای داده DEFLATE خام حاوی بایتهای فشردهشده بدون هیچگونه هدر فایل یا مجموعهای کنترلی پایانی هستند. مرورگرهای وب و ابزارهای شبکه اغلب در پردازش این جریانهای عریان به دلیل نداشتن فراداده مانند نامهای فایل اصلی، مهر زمانی تغییر یا شناسههای سیستمعامل با مشکل مواجه میشوند. بستهبندی این دادههای خام در یک ظرف GZIP این مشکلات سازگاری را حل میکند. توسعهدهندگان با جریانهای خام DEFLATE در داخل پروتکلهای شبکه مانند فشردهسازی HTTP، تکههای تصویر PNG و آرشیوهای ZIP مواجه میشوند. هنگامی که این جریانها نیاز دارند به عنوان فایلهای مستقل برای ابزارهای خط فرمان یا بارگیریهای وب استاندارد ذخیره شوند، مهندسان آنها را به قالب GZIP تبدیل میکنند. این امر تضمین میکند که ابزارهای رفع فشردهسازی فوراً نوع فایل را تشخیص داده و محتویات را بدون ایجاد خطا استخراج کنند.
مشخصات فنی و تحلیل کدک
DEFLATE خام (application/zlib یا جریان خام) از ترکیبی از تطبیق فرهنگ لغت لغزان LZ77 و کدگذاری هافمن برای فشردهسازی توالی بایتها بدون هیچگونه هدر چارچوببندی استفاده میکند. ظرف GZIP (application/gzip) این محموله دقیق DEFLATE را میگیرد و آن را با یک هدر ۱۰ بایتی دقیق حاوی امضای شماره جادویی دو بایتی (0x1F, 0x8B)، پرچمهای روش فشردهسازی، زمان تغییر و شناسه سیستمعامل بستهبندی میکند. ساختار GZIP همچنین یک تریلر ۸ بایتی حاوی مجموع کنترلی CRC32 برای تأیید یکپارچگی دادهها و اندازه فایل فشردهنشده به توان ۳۲ اضافه میکند.
سازگاری با سیستمعامل و مرورگر
جریانهای GZIP از سازگاری جهانی در سیستمعاملهای مدرن از جمله لینوکس، مکاواس و ویندوز برخوردار هستند. ابزارهای خط فرمان مانند gzip، gunzip و 7-Zip به طور بومی فایلهای GZIP را میخوانند. مرورگرهای وب به طور خودکار رفع فشردهسازی GZIP را هنگام دریافت پاسخهای HTTP از سرورها مدیریت میکنند، اگرچه DEFLATE خام اغلب به منطق تجزیهکننده سفارشی در محیطهای جاوا اسکریپت یا ماژولهای WebAssembly نیاز دارد.
💡 اطلاعات مفید
همیشه تأیید کنید که ابزار رفع فشردهسازی شما تریلر GZIP را به درستی میخواند، زیرا مجموعهای کنترلی CRC32 پایانی خراب باعث میشوند ابزارهای استخراج متوقف شوند حتی اگر محموله زیرین DEFLATE دست نخورده باشد.
مقایسه فرمتها و مشخصات فنی
یک جریان خام DEFLATE ۱۰ مگابایتی که به یک فایل GZIP تبدیل شده است، یک سربار کوچک ۱۸ بایتی برای هدرها و تریلرها اضافه میکند. انتقال این فایل روی اتصال 5G حدود 0.04 ثانیه، روی شبکه استاندارد 4G تقریباً 0.2 ثانیه و روی اتصال فیبر نوری گیگابیت کمتر از 0.01 ثانیه طول میکشد.
پرسشهای متداول
چگونه جریان DEFLATE خام را بدون افت کیفیت به جریان GZIP تبدیل کنیم؟
هر دو قالب از فشردهسازی بدون اتلاف بر اساس دقیقاً همان الگوریتم DEFLATE استفاده میکنند. تبدیل بین آنها به سادگی هدرهای ظرف و مجموعهای کنترلی را در اطراف بایتهای فشردهشده موجود اضافه میکند، به این معنی که هیچگونه از دست دادن دادهای در طول فرآیند بستهبندی رخ نمیدهد.
تفاوت بین DEFLATE خام و جریان GZIP چیست؟
DEFLATE خام فقط حاوی محموله فشردهشده بدون هیچگونه هدر یا پاورقی شناسایی است. جریان GZIP یک ظرف فایل استاندارد است که یک هدر ۱۰ بایتی و یک مجموع کنترلی پایانی ۸ بایتی را به دادههای خام DEFLATE برای ردیابی فراداده و تشخیص خطا اضافه میکند.