ما هو ملف ZIP؟
الملف ذو الامتداد .zip هو أرشيف يمكنه الاحتفاظ بملف أو مجلد واحد أو أكثر. يمكن أن يتم تطبيق ضغط الأرشيف على الملفات المضمنة لتقليل حجم ملف ZIP. تم نشر تنسيق ملف ZIP مرة أخرى في فبراير 1989 بواسطة Phil Katz لتحقيق أرشفة الملفات والمجلدات. تم جعل التنسيق جزءًا من الأداة المساعدة PKZIP ، التي أنشأتها شركة PKWARE، Inc. مباشرةً بعد توفر المواصفات المتاحة ، جعلت العديد من الشركات تنسيق ملف ZIP جزءًا من أدوات برامجها بما في ذلك Microsoft (منذ Windows 7) و Apple (Mac OS X) والعديد من الشركات الأخرى.
تاريخ موجز لتنسيق ملف ZIP
يعود تاريخ تنسيق ملف ZIP إلى حدث رفع دعوى قضائية بواسطة System Enhancement Associates (SEA) ضد PKWARE لاستخدام الأداة المساعدة ARC الخاصة بها دون أذونات لعلامتها التجارية وحقوق النشر الخاصة بمظهر المنتج وواجهة المستخدم. قبل ذلك ، كان فيل كاتز قد أعاد كتابة الكود المصدري لـ SEA وأصدر PKXARC ، مستخرج ARC ، و PKARC ، ضاغط ملفات ، كبرنامج مجاني للأنظمة القائمة على MS-DOS. بعد خسارته للدعوى القضائية ، لم يعد بإمكان PKWARE استخدام أي شيء متعلق بـ ARC. هذا هو المكان الذي ظهر فيه إنشاء ضغط ملف جديد ، سمي باسم ZIP والذي كان جزءًا من أداة PKZIP في PKWARE، Inc.
أصدر Katz مواصفات تنسيق ملف ZIP إلى المجال العام ، مع الاحتفاظ بحقوق الملكية على أداة الضغط والاستخراج الخاصة به ، مثل PKZIP. كان نظام ضغط ZIP (وهو) قادرًا على أرشفة الملفات في مجلد عن طريق فحص التكرار الدوري 32 بت (CRC) خوارزمية لضغط الملف الأحجام. على عكس ARC ، تضمنت مجلدات .ZIP ملف دليل لعب دور كتاب الشفرات الخاص بمصمم التشفير ، مع الاحتفاظ بالمعلومات اللازمة لعرض الملفات المضغوطة.
طرق الضغط المدعومة في ZIP
وفقًا لمواصفات تنسيق ملف .ZIP ، يتم دعم طرق الضغط التالية.
- مخزن - لا يعني أي ضغط
- إنكمش
- التخفيض (هذا يعني أن عوامل الضغط تتراوح من المستوى 1 إلى المستوى 4)
- ينفجر داخليا، ينهار للداخل
- انكماش
- Deflat64
- BZIP2
- LZMA (EFS)
- WavPack
- الإصدار PPMd I ، Rev 1
DEFLATE هي طريقة ضغط شائعة الاستخدام وهي عبارة عن خوارزمية لضغط التاريخ بدون فقدان البيانات التي تستخدم مزيجًا من ترميز LZ77 و Huffman وهو مفصل في RFC 1951.
مواصفات تنسيق ملف مضغوط
تتمتع ملفات ZIP بالقدرة على تخزين ملفات متعددة باستخدام تقنيات ضغط مختلفة بينما تدعم في نفس الوقت تخزين ملف دون أي ضغط. يتم تخزين / ضغط كل ملف على حدة مما يساعد على استخراجه ، أو إضافة ملفات جديدة ، دون الضغط أو فك الضغط على الأرشيف بأكمله.
تنسيق ملف ZIP العام
يتم تنظيم كل ملف مضغوط بالطريقة التالية:
تنسيق ملف مضغوط |
---|
رأس الملف المحلي 1 |
بيانات الملف 1 |
واصف البيانات 1 |
رأس الملف المحلي 2 |
بيانات الملف 2 |
واصف البيانات 2 |
…. |
…. |
رأس الملف المحلي ن |
ملف البيانات ن |
واصف البيانات N |
أرشيف فك التشفير |
أرشفة سجل البيانات الإضافية |
الدليل المركزي |
يستخدم تنسيق ملف ZIP خوارزمية CRC 32 بت لغرض الأرشفة. من أجل عرض الملفات المضغوطة ، يحتوي أرشيف ZIP على دليل في نهايته يحافظ على إدخال الملفات المضمنة وموقعها في ملف الأرشيف. وبالتالي ، فإنه يلعب دور الترميز لتغليف المعلومات الضرورية لتقديم الملفات المضغوطة. تستخدم أجهزة قراءة ملفات ZIP الدليل لتحميل قائمة الملفات دون قراءة أرشيف ZIP بالكامل. يحتفظ التنسيق بنسخ مزدوجة من بنية الدليل لتوفير حماية أكبر ضد فقدان البيانات.
يتم تمثيل كل ملف في أرشيف ZIP على أنه إدخال فردي حيث يتكون كل إدخال من رأس ملف محلي متبوعًا ببيانات الملف المضغوط ، ويحتوي الدليل الموجود في نهاية الأرشيف على الإشارات إلى جميع إدخالات الملفات هذه. يجب أن يتجنب قارئو ملفات ZIP قراءة رؤوس الملفات المحلية ويجب قراءة كل أنواع قوائم الملفات من الدليل. هذا الدليل هو المصدر الوحيد لإدخالات الملفات الصالحة في الأرشيف حيث يمكن إلحاق الملفات بنهاية الأرشيف أيضًا. هذا هو السبب في أنه إذا قرأ القارئ الرؤوس المحلية لأرشيف ZIP من البداية ، فقد يقرأ إدخالات غير صالحة (محذوفة) بالإضافة إلى أن تلك ليست جزءًا من الدليل الذي يتم حذفه من الأرشيف.
لا يلزم أن يتطابق ترتيب إدخالات الملف في الدليل المركزي مع ترتيب إدخالات الملف في الأرشيف.
إدخالات ملف مضغوط
يتم ترتيب الإدخالات في ملف مضغوط واحدًا تلو الآخر حيث يتكون كل إدخال من:
- رأس الملف المحلي
- حقول بيانات إضافية اختيارية
- بيانات المستخدم (مضغوطة اختياريًا / مشفرة اختياريًا)
يمثل رأس الملف المحلي لكل إدخال معلومات حول الملف مثل التعليق وحجم الملف واسم الملف. يمكن أن تستوعب حقول البيانات الإضافية (اختياري) المعلومات الخاصة بخيارات القابلية للتوسعة الخاصة بتنسيق ZIP.
رأس الملف المحلي
يحتوي رأس الملف المحلي على بنية حقل محددة تتكون من قيم متعددة البايت. يتم تخزين جميع القيم بترتيب بايت صغير حيث يحسب طول الحقل الطول بالبايت. تستخدم جميع الهياكل في ملف ZIP تواقيع 4 بايت لكل إدخال ملف. نهاية توقيع الدليل المركزي هي 0x06054b50 ويمكن تمييزها باستخدام توقيعها الفريد. فيما يلي ترتيب المعلومات المخزنة في رأس الملف المحلي.
الإزاحة | البايت | الوصف |
---|---|---|
0 | 4 | توقيع رأس الملف المحلي # 0x04034b50 (يُقرأ كرقم صغير) |
4 | 2 | الإصدار المطلوب للاستخراج (الحد الأدنى) |
6 | 2 | علامة بت للأغراض العامة |
8 | 2 | أسلوب الضغط |
10 | 2 | وقت آخر تعديل للملف |
12 | 2 | تاريخ آخر تعديل للملف |
14 | 4 | CRC-32 |
18 | 4 | الحجم المضغوط |
22 | 4 | حجم غير مضغوط |
26 | 2 | طول اسم الملف (n) |
28 | 2 | طول الحقل الإضافي (م) |
30 | n | اسم الملف |
30 + ن | م | حقل إضافي |
رأس ملف الدليل المركزي
الإزاحة | البايت | الوصف |
---|---|---|
0 | 4 | توقيع رأس ملف الدليل المركزي # 0x02014b50 |
4 | 2 | الإصدار من صنع |
6 | 2 | الإصدار المطلوب للاستخراج (الحد الأدنى) |
8 | 2 | علامة بت للأغراض العامة |
10 | 2 | أسلوب الضغط |
12 | 2 | وقت آخر تعديل للملف |
14 | 2 | تاريخ آخر تعديل للملف |
16 | 4 | CRC-32 |
20 | 4 | الحجم المضغوط |
24 | 4 | حجم غير مضغوط |
28 | 2 | طول اسم الملف (n) |
30 | 2 | طول الحقل الإضافي (م) |
32 | 2 | طول تعليق الملف (k) |
34 | 2 | رقم القرص الذي يبدأ منه الملف |
36 | 2 | سمات الملفات الداخلية |
38 | 4 | سمات الملفات الخارجية |
42 | 4 | الإزاحة النسبية لرأس الملف المحلي. هذا هو عدد البايتات بين بداية القرص الأول الذي يظهر عليه الملف وبداية رأس الملف المحلي. يسمح هذا للبرنامج بقراءة الدليل المركزي لتحديد موضع الملف داخل ملف ZIP. |
46 | n | اسم الملف |
46 + ن | م | حقل إضافي |
46 + n + m | k | تعليق على الملف |
نهاية سجل الدليل المركزي
الإزاحة | البايت | الوصف |
---|---|---|
0 | 4 | نهاية توقيع الدليل المركزي # 0x06054b50 |
4 | 2 | رقم هذا القرص |
6 | 2 | القرص حيث يبدأ الدليل المركزي |
8 | 2 | عدد سجلات الدليل المركزي على هذا القرص |
10 | 2 | العدد الإجمالي لسجلات الدليل المركزي |
12 | 4 | حجم الدليل المركزي (بايت) |
16 | 4 | إزاحة بداية الدليل المركزي ، المتعلقة ببداية الأرشيف |
20 | 2 | طول التعليق (ن) |
22 | ن | تعليق |