تحويل GZIP إلى Deflate
يؤدي تحويل تدفق GZIP إلى DEFLATE خام إلى إزالة غلاف الملف الخارجي والبيانات الوصفية للرأس، تاركاً الحمولة المضغوطة فقط لبروتوكولات الشبكة المتخصصة والأرشيفات منخفضة المستوى.
مقارنة التنسيقات والمواصفات التقنية
| المواصفات | GZIP | DEFLATE |
|---|---|---|
| نوع MIME | application/ | application/ |
| النوع | حاوية تدفق DEFLATE | تدفق DEFLATE خام |
| الضغط | DEFLATE (RFC 1951) | LZ77 + ترميز Huffman |
| المواصفات القياسية | IETF RFC 1952 | IETF RFC 1950 / RFC 1951 |
| رأس البايتات السحرية (Magic Bytes) | 1F 8B (gzip ID1/ID2) | 78 01 / 78 9C / 78 DA (zlib header bytes) |
نظرة عامة على التنسيق والاستخدامات
يحدث تحويل تدفق GZIP إلى DEFLATE خام بشكل متكرر في تطوير الويب، وبرمجة الشبكات، وتدفقات عمل تخزين البيانات منخفضة المستوى. يتعامل المطورون غالباً مع GZIP عند حفظ ملفات فردية على القرص نظراً لأن التنسيق يتضمن بيانات وصفية مفيدة مثل أسماء الملفات الأصلية وطوابع زمنية للتعديل. ومع ذلك، تتوقع بروتوكولات ضغط HTTP الحديثة والتنسيقات الثنائية المحددة الحمولة المضغوطة فقط بدون أي بايتات غلاف. يسمح إجراء هذا التحويل للمهندسين بتغذية البيانات المضغوطة القياسية مباشرة في تدفقات الشبكة أو المحللات المخصصة. على سبيل المثال، يتطلب بناء معالج استجابة HTTP مخصص أو العمل مع أرشيفات ZIP غالباً إزالة رأس GZIP وتذييل CRC32 لعزل ناتج الخوارزمية الخام. تؤدي إزالة بيانات الحاوية الإضافية هذه إلى تقليل العبء عندما يكون كل بايت واحد مهماً في بيئات البرمجة المقيدة.
المواصفات التقنية وتحليل الترميز (Codec)
يستخدم تدفق GZIP، الذي يعرّفه نوع MIME application/gzip، بنية حاوية محددة في RFC 1952. ويبدأ بترويسة من بايتين تحمل التوقيع 0x1F و0x8B، تليها أعلام الضغط ووقت التعديل ومعرّف نظام التشغيل واسم ملف اختياري. وتأتي البيانات المضغوطة بعدها، ثم ينتهي الملف بمجموع تحقق CRC32 من أربعة بايتات ومؤشر من أربعة بايتات إلى الحجم قبل فك الضغط. أما DEFLATE الخام فهو تدفق بتات وفق RFC 1951، من دون توقيع ثابت أو ترويسة تأطير أو تذييل. ويصف نوع MIME application/zlib غلاف zlib وفق RFC 1950 حول DEFLATE، لا تدفق DEFLATE خاماً. يزيل التحويل من GZIP إلى DEFLATE الخام بيانات GZIP الوصفية ومجموع التحقق، مع الحفاظ على الحمولة المضغوطة.
توافق أنظمة التشغيل والمتصفحات
تعمل تدفقات DEFLATE الخام بشكل أصلي عبر أنظمة التشغيل الحديثة ووقت تشغيل الويب من خلال لغات البرمجة القياسية مثل Python و Node.js و C++. تتعامل المتصفحات مع DEFLATE بشكل أصلي عبر مجموعة ترويسات ترميز المحتوى في HTTP. تدعم أنظمة التشغيل مثل Windows و macOS و Linux التدفقات الخام من خلال مكتبات ضغط النظام مثل zlib. توفر منصات الهواتف المحمولة بما في ذلك Android و iOS وصولاً مباشراً إلى واجهة برمجة التطبيقات لروتينات DEFLATE لطبقات تخزين التطبيقات المخصصة.
معلومات مفيدة
تحقق دائماً من أن المحلل المستهدف يتوقع تدفق RFC 1951 خالصاً بدلاً من تدفق مغلف بـ zlib، لأن zlib يضيف رأسًا من بايتين سيرفضهما محللو DEFLATE الخام.
الأسئلة الشائعة
كيف تقوم بتحويل تدفق GZIP إلى DEFLATE الخام دون فقدان الجودة؟
يستخدم التنسيقان خوارزمية ضغط واحدة بلا فقد. ويقتصر التحويل على قراءة حاوية GZIP وإزالة ترويستها ذات العشرة بايتات وتذييلها ذي الثمانية بايتات، ثم حفظ كتل البيانات المضغوطة الداخلية. لا تُفقد أي بيانات، لأن الخوارزمية الأساسية لا تتغير.
ما الفرق بين تدفق GZIP و DEFLATE الخام؟
GZIP حاوية ملفات كاملة تتضمن ترويسة ذات توقيع بايتات مميز وأسماء الملفات الأصلية وطوابع زمنية للتعديل وتذييل مجموع التحقق. أما DEFLATE الخام فهو البيانات المضغوطة وحدها، من دون ترويسات أو تذييلات أو بيانات وصفية للملف.