aspose.info
TH

ไปรษณีย์

อัปเดตเมื่อ

ไฟล์ ZIP คืออะไร?

ไฟล์ที่มีนามสกุล .zip เป็นไฟล์เก็บถาวรที่สามารถเก็บไฟล์หรือไดเร็กทอรีได้ตั้งแต่หนึ่งไฟล์ขึ้นไป ไฟล์เก็บถาวรสามารถใช้การบีบอัดกับไฟล์ที่รวมเพื่อลดขนาดไฟล์ ZIP รูปแบบไฟล์ ZIP เผยแพร่สู่สาธารณะในเดือนกุมภาพันธ์ พ.ศ. 2532 โดย Phil Katz เพื่อให้บรรลุการเก็บไฟล์และโฟลเดอร์ รูปแบบนี้เป็นส่วนหนึ่งของยูทิลิตี PKZIP ซึ่งสร้างโดย PKWARE, Inc. ทันทีหลังจากที่ ข้อกำหนดที่มี หลายบริษัทกำหนดให้รูปแบบไฟล์ ZIP เป็นส่วนหนึ่งของยูทิลิตี้ซอฟต์แวร์ของตน รวมถึง Microsoft (ตั้งแต่ Windows 7), Apple (Mac OS X ) และอื่นๆ อีกมากมาย

ประวัติโดยย่อของรูปแบบไฟล์ ZIP

ประวัติของรูปแบบไฟล์ ZIP ย้อนหลังไปถึงเหตุการณ์ฟ้องร้องโดย System Enhancement Associates (SEA) ต่อ PKWARE สำหรับการใช้ยูทิลิตี้ ARC โดยไม่ได้รับอนุญาตสำหรับเครื่องหมายการค้าและลิขสิทธิ์ของรูปลักษณ์ของผลิตภัณฑ์และอินเทอร์เฟซผู้ใช้ ก่อนหน้านี้ Phil Katz ได้เขียนซอร์สโค้ดของ SEA ใหม่และเปิดตัว PKXARC ซึ่งเป็นตัวแยก ARC และ PKARC ซึ่งเป็นตัวบีบอัดไฟล์ เป็นฟรีแวร์สำหรับระบบที่ใช้ MS-DOS แพ้คดี PKWARE ไม่สามารถใช้อะไรที่เกี่ยวข้องกับ ARC ได้อีกต่อไป นี่คือที่มาของการสร้างการบีบอัดไฟล์ใหม่ชื่อ ZIP ซึ่งเป็นส่วนหนึ่งของยูทิลิตี้ PKZIP ที่ PKWARE, Inc.

Katz เผยแพร่ข้อมูลจำเพาะรูปแบบไฟล์ ZIP ให้เป็นสาธารณสมบัติ ในขณะที่ยังคงรักษาสิทธิ์ในกรรมสิทธิ์เหนือยูทิลิตี้บีบอัดและแยกไฟล์ของเขา นั่นคือ PKZIP ระบบบีบอัด ZIP (และ) สามารถเก็บถาวรไฟล์ในโฟลเดอร์โดยใช้อัลกอริทึมการตรวจสอบความซ้ำซ้อนแบบวนรอบ 32 บิต (CRC) เพื่อบีบอัดไฟล์ ขนาด ซึ่งแตกต่างจาก ARC โฟลเดอร์ .ZIP มีไฟล์ไดเร็กทอรีที่ทำหน้าที่เป็นสมุดรหัสของโปรแกรมเข้ารหัส ซึ่งเก็บข้อมูลที่จำเป็นในการแสดงผลไฟล์บีบอัด

วิธีการบีบอัดที่รองรับใน ZIP

ตามข้อกำหนดรูปแบบไฟล์ .ZIP วิธีการบีบอัดต่อไปนี้ได้รับการสนับสนุน

  • Store - หมายถึงไม่มีการบีบอัด
  • หดตัว
  • การลดลง (หมายถึงปัจจัยการบีบอัดตั้งแต่ระดับ 1 ถึงระดับ 4)
  • ระเบิด
  • ยุบ
  • ดีแฟลต 64
  • BZIP2
  • LZMA (อีเอฟเอส)
  • WavPack
  • PPMd รุ่น I, Rev 1

DEFLATE เป็นวิธีการบีบอัดที่ใช้กันทั่วไป ซึ่งเป็นอัลกอริทึมการบีบอัดวันที่แบบไม่สูญเสียข้อมูล ซึ่งใช้การเข้ารหัส LZ77 และ Huffman ร่วมกัน และมีรายละเอียดอยู่ใน RFC 1951

ข้อมูลจำเพาะรูปแบบไฟล์ ZIP

ไฟล์ ZIP มีความสามารถในการจัดเก็บไฟล์หลายไฟล์โดยใช้เทคนิคการบีบอัดที่แตกต่างกัน ในขณะเดียวกันก็รองรับการจัดเก็บไฟล์โดยไม่มีการบีบอัด แต่ละไฟล์จะถูกจัดเก็บ/บีบอัดทีละไฟล์ ซึ่งช่วยในการแตกไฟล์หรือเพิ่มไฟล์ใหม่ โดยไม่ใช้การบีบอัดหรือคลายการบีบอัดไฟล์เก็บถาวรทั้งหมด

รูปแบบไฟล์ ZIP โดยรวม

ไฟล์ Zip แต่ละไฟล์มีโครงสร้างในลักษณะต่อไปนี้:

รูปแบบไฟล์ ZIP
ส่วนหัวของไฟล์ในเครื่อง 1
ไฟล์ข้อมูล 1
ตัวอธิบายข้อมูล 1
ส่วนหัวของไฟล์ในเครื่อง 2
ไฟล์ข้อมูล 2
ตัวอธิบายข้อมูล 2
….
….
ส่วนหัวของไฟล์ในเครื่อง N
ไฟล์ข้อมูล N
ตัวอธิบายข้อมูล N
เก็บส่วนหัวถอดรหัส
เก็บบันทึกข้อมูลเพิ่มเติม
สารบบกลาง

รูปแบบไฟล์ ZIP ใช้อัลกอริทึม CRC แบบ 32 บิตเพื่อการเก็บถาวร ในการเรนเดอร์ไฟล์บีบอัด ไฟล์เก็บถาวร ZIP จะเก็บไดเร็กทอรีไว้ที่ส่วนท้ายซึ่งเก็บรายการไฟล์ที่มีอยู่และตำแหน่งไฟล์ในไฟล์เก็บถาวร ดังนั้นจึงมีบทบาทในการเข้ารหัสสำหรับการห่อหุ้มข้อมูลที่จำเป็นในการแสดงไฟล์บีบอัด โปรแกรมอ่าน ZIP ใช้ไดเร็กทอรีเพื่อโหลดรายการไฟล์โดยไม่ต้องอ่านไฟล์ ZIP ทั้งหมด รูปแบบจะเก็บสำเนาของโครงสร้างไดเร็กทอรีไว้ 2 ชุดเพื่อป้องกันข้อมูลสูญหายได้มากขึ้น

แต่ละไฟล์ในไฟล์เก็บถาวร ZIP จะแสดงเป็นรายการเดี่ยว โดยแต่ละรายการประกอบด้วย Local File Header ตามด้วยข้อมูลไฟล์ที่บีบอัด ไดเร็กทอรีที่ส่วนท้ายของไฟล์เก็บถาวรจะเก็บการอ้างอิงถึงรายการไฟล์เหล่านี้ทั้งหมด โปรแกรมอ่านไฟล์ ZIP ควรหลีกเลี่ยงการอ่านส่วนหัวของไฟล์ในเครื่อง และควรอ่านรายชื่อไฟล์ทุกประเภทจากไดเร็กทอรี ไดเร็กทอรีนี้เป็นแหล่งเดียวสำหรับรายการไฟล์ที่ถูกต้องในไฟล์เก็บถาวร เนื่องจากไฟล์สามารถต่อท้ายไฟล์เก็บถาวรได้เช่นกัน นั่นคือเหตุผลที่หากผู้อ่านอ่านส่วนหัวในเครื่องของไฟล์ ZIP ตั้งแต่ต้น เครื่องอาจอ่านรายการที่ไม่ถูกต้อง (ถูกลบ) รวมทั้งรายการเหล่านั้นไม่ได้เป็นส่วนหนึ่งของไดเรกทอรีที่ถูกลบออกจากไฟล์เก็บถาวร

ลำดับของรายการไฟล์ในไดเร็กทอรีกลางไม่จำเป็นต้องตรงกับลำดับของรายการไฟล์ในไฟล์เก็บถาวร

รายการไฟล์ ZIP

รายการในไฟล์ ZIP จะถูกจัดเรียงทีละรายการโดยแต่ละรายการประกอบด้วย:

  • ส่วนหัวของไฟล์ในเครื่อง
  • ฟิลด์ข้อมูลเพิ่มเติมเพิ่มเติม
  • ข้อมูลผู้ใช้ (เลือกได้ว่าจะบีบอัด/เข้ารหัสหรือไม่ก็ได้)

Local File Header ของแต่ละรายการแสดงข้อมูลเกี่ยวกับไฟล์ เช่น ความคิดเห็น ขนาดไฟล์ และชื่อไฟล์ ช่องข้อมูลเพิ่มเติม (ไม่บังคับ) สามารถรองรับข้อมูลสำหรับตัวเลือกการขยายของรูปแบบ ZIP

ส่วนหัวของไฟล์ในเครื่อง

Local File Header มีโครงสร้างฟิลด์เฉพาะที่ประกอบด้วยค่าหลายไบต์ ค่าทั้งหมดจะถูกจัดเก็บตามลำดับไบต์แบบ little-endian โดยที่ความยาวของฟิลด์จะนับความยาวเป็นไบต์ โครงสร้างทั้งหมดในไฟล์ ZIP ใช้ลายเซ็น 4 ไบต์สำหรับแต่ละรายการไฟล์ จุดสิ้นสุดของลายเซ็นไดเรกทอรีกลางคือ 0x06054b50 และสามารถแยกความแตกต่างได้โดยใช้ลายเซ็นเฉพาะของตัวเอง ต่อไปนี้เป็นลำดับของข้อมูลที่จัดเก็บไว้ใน Local File Header

ออฟเซ็ตไบต์คำอธิบาย
04ลายเซ็นส่วนหัวของไฟล์ในเครื่อง # 0x04034b50 (อ่านเป็นตัวเลขแบบ little-endian)
42เวอร์ชันที่ต้องการแยก (ขั้นต่ำ)
62ค่าสถานะบิตวัตถุประสงค์ทั่วไป
82วิธีการบีบอัด
102ไฟล์ เวลาที่แก้ไขล่าสุด
122วันที่แก้ไขไฟล์ล่าสุด
144ซีอาร์ซี-32
184ขนาดที่บีบอัด
224ขนาดที่ไม่บีบอัด
262ความยาวของชื่อไฟล์ (n)
282ความยาวสนามพิเศษ (ม.)
30nชื่อไฟล์
30+nmช่องพิเศษ

ส่วนหัวของไฟล์ไดเรกทอรีกลาง

ออฟเซ็ตไบต์คำอธิบาย
04ลายเซ็นส่วนหัวของไฟล์ไดเรกทอรีกลาง # 0x02014b50
42เวอร์ชันที่สร้างโดย
62เวอร์ชันที่ต้องการแยก (ขั้นต่ำ)
82ค่าสถานะบิตวัตถุประสงค์ทั่วไป
102วิธีการบีบอัด
122ไฟล์ เวลาที่แก้ไขล่าสุด
142ไฟล์ วันที่แก้ไขล่าสุด
164ซีอาร์ซี-32
204ขนาดที่บีบอัด
244ขนาดที่ไม่บีบอัด
282ความยาวของชื่อไฟล์ (n)
302ความยาวช่องพิเศษ (ม.)
322ความยาวความคิดเห็นของไฟล์ (k)
342หมายเลขดิสก์ที่ไฟล์เริ่มต้น
362แอตทริบิวต์ไฟล์ภายใน
384แอตทริบิวต์ไฟล์ภายนอก
424ค่าชดเชยสัมพัทธ์ของส่วนหัวไฟล์ในเครื่อง นี่คือจำนวนไบต์ระหว่างการเริ่มต้นของดิสก์แรกที่ไฟล์เกิดขึ้น และการเริ่มต้นของส่วนหัวของไฟล์ในเครื่อง ซึ่งช่วยให้ซอฟต์แวร์ที่อ่านไดเร็กทอรีกลางสามารถระบุตำแหน่งไฟล์ภายในไฟล์ ZIP ได้
46nชื่อไฟล์
46+nmช่องพิเศษ
46+n+mkความคิดเห็นของไฟล์

จบบันทึกสารบบกลาง

ออฟเซ็ตไบต์คำอธิบาย
04จุดสิ้นสุดของลายเซ็นกลางของไดเร็กทอรี # 0x06054b50
42จำนวนของดิสก์นี้
62ดิสก์ที่ไดเรกทอรีกลางเริ่มต้น
82จำนวนบันทึกไดเรกทอรีกลางบนดิสก์นี้
102จำนวนรวมของบันทึกไดเรกทอรีกลาง
124ขนาดของไดเรกทอรีกลาง (ไบต์)
164ออฟเซ็ตของการเริ่มต้นไดเร็กทอรีกลาง สัมพันธ์กับการเริ่มต้นของไฟล์เก็บถาวร
202ความยาวของความคิดเห็น (n)
22nความคิดเห็น

อ้างอิง

ดูเพิ่มเติม