DEFLATE ดิบ (.deflate)

IETF มาตรฐาน

DEFLATE คืออัลกอริทึมการบีบอัดข้อมูลแบบไม่สูญเสียข้อมูลที่ใช้อย่างแพร่หลายในประวัติศาสตร์คอมพิวเตอร์ ซึ่งขับเคลื่อนไฟล์เก็บถาวร ZIP, สตรีม GZIP, ภาพ PNG และการบีบอัดเว็บ HTTP มานานกว่าสามทศวรรษ

แปลง GZIP เป็น DEFLATE

ตัวแปลงจาก GZIP เป็น DEFLATE ฟรีในเบราว์เซอร์ แปลงไฟล์ได้ทันทีบนอุปกรณ์ของคุณ

ตรวจสอบไฟล์และข้อมูลเมตา

ระบบปฏิบัติการและเครื่องมือวิเคราะห์ไฟล์จะระบุไฟล์ DEFLATE โดยการตรวจสอบลำดับไบต์ไบนารีส่วนต้น:

เลือกหรือวางไฟล์ที่นี่

เป็นส่วนตัว - ไฟล์จะไม่ออกจากอุปกรณ์ของคุณ

หรือวาง Ctrl+V
รับประกันความเป็นส่วนตัวโดยไม่มีการส่งข้อมูลผ่านเครือข่าย: อัปโหลด 0 ไบต์ไปยังเซิร์ฟเวอร์ภายนอก การประมวลผลทั้งหมดเกิดขึ้นภายในแซนด์บ็อกซ์ของเบราว์เซอร์ของคุณ

ลายเซ็นส่วนหัวระดับไบต์

ระบบปฏิบัติการและเครื่องมือวิเคราะห์ไฟล์จะระบุไฟล์ DEFLATE โดยการตรวจสอบลำดับไบต์ไบนารีส่วนต้น:

ลายเซ็น HEX (OFFSET 0):

DEFLATE แบบดิบไม่มีลายเซ็นตายตัว ส่วนสตรีมที่ห่อหุ้มด้วย zlib จะเริ่มด้วยไบต์ CMF/FLG ซึ่งเปลี่ยนแปลงได้

การแสดงผลรูปแบบ ASCII: ไม่มีลายเซ็นตายตัว

มาตรฐาน: IETF RFC 1951 / RFC 1950 (zlib)

ข้อมูลจำเพาะทางเทคนิค

สถาปัตยกรรมคอนเทนเนอร์บิตสตรีม RFC 1951 ดิบ หรือสตรีม RFC 1950 ที่ห่อด้วย zlib พร้อมส่วนหัว 2 ไบต์และ checksum Adler-32
การบีบอัดพจนานุกรมเลื่อน LZ77 (หน้าต่างสูงสุด 32 KB) ร่วมกับการเข้ารหัสเอนโทรปี Huffman แบบไดนามิก/คงที่
การจัดลำดับไบต์ลำดับการจัดเรียงบิตแบบ Little-Endian
พื้นที่สีไม่เกี่ยวข้อง (สตรีมบีบอัดข้อมูล)
ช่องสัญญาณและโครงสร้างสตรีมข้อมูลไบนารีดิบหรือข้อความ
ขนาดสูงสุดความยาวสตรีมไม่จำกัด
ความโปร่งใสสร้างข้อมูลกลับคืนโดยไม่สูญเสียและตรงระดับบิต 100%
การสตรีมและแบบโปรเกรสซีฟบิตสตรีมแบบแบ่งบล็อกรองรับการสตรีมไบต์ต่อเนื่องได้ตามต้องการ

ตารางเปรียบเทียบทางเทคนิค: DEFLATE กับคู่แข่ง

คุณลักษณะทางเทคนิคDEFLATE (ปัจจุบัน)GZBROTLIZSTD
การกำหนดมาตรฐานIETF RFC 1951 (ดิบ) / RFC 1950 (zlib)IETF RFC 1952 (Gzip)IETF RFC 7932 (Brotli)IETF RFC 8878 (Zstandard)
หน้าต่างเลื่อน (Sliding Window)สูงสุด 32 กิโลไบต์สูงสุด 32 กิโลไบต์สูงสุด 16 เมกะไบต์สูงสุด 2 จิกะไบต์
โหมดค่าตรวจสอบAdler-32 (ในตัวห่อหุ้ม zlib)CRC-32 (ในตัวห่อหุ้ม gzip)ไม่มีสตรีมในตัวxxHash64 (แฮชเร็ว 64 บิต)
การใช้งานประจำวันภาพ PNG, สตรีม PDF, ZIPUnix .tar.gz, HTTP gzipฟอนต์เว็บ (WOFF2), HTTP brLinux kernel, ฐานข้อมูล, เกม

รูปแบบความเสียหายทั่วไปและคู่มือการกู้คืน Hex

การคลายการบีบอัดล้มเหลวพร้อมข้อความ 'Z_DATA_ERROR: incorrect data check'

สาเหตุหลัก: ความไม่ตรงกันของค่าตรวจสอบ Adler-32 ขนาด 4 ไบต์ที่ส่วนท้ายของสตรีมที่ห่อหุ้มด้วย zlib

การกู้คืน: ข้ามการตรวจสอบ Adler-32 โดยใช้ RAW inflate หรือซ่อมแซมด้วย File2File.app Deflate Recovery

การวิเคราะห์ความปลอดภัยและเวกเตอร์การโจมตีตัวแยกวิเคราะห์

ตัววิเคราะห์ DEFLATE ต้องตรวจสอบความถูกต้องของรหัสการสร้างต้นไม้ Huffman อย่างเข้มงวดเพื่อป้องกันการเขียนพอยเตอร์นอกขอบเขต

เวกเตอร์การโจมตีที่ทราบ

  • ตารางความยาวบิตของต้นไม้ Huffman แบบไดนามิกที่ไม่สมบูรณ์หรือกำหนดรหัสเกินกว่าที่รองรับ ทำให้เกิดการอ่านหน่วยความจำที่ไม่ถูกต้อง
  • ระเบิดการคลายการบีบอัด (zip bomb) ที่ขยายเพย์โหลดขนาดเล็กให้กลายเป็น RAM หลายร้อยจิกะไบต์
  • การอ่านบัฟเฟอร์เกินขอบเขตในรหัสระยะทางหน้าต่างเลื่อนที่ไม่ได้ตรวจสอบ

แนวทางปฏิบัติที่ดีที่สุดในการป้องกัน: บังคับใช้ขีดจำกัดการจัดสรรหน่วยความจำสูงสุดและขีดจำกัดอัตราการขยายตัวระหว่างการคลายการบีบอัด

ประวัติความเป็นมาและเหตุการณ์สำคัญ

1996Peter Deutsch กำหนดให้ DEFLATE เป็น IETF RFC 1951 และ zlib เป็น RFC 1950 อย่างเป็นทางการ
1995Jean-loup Gailly และ Mark Adler เปิดตัว zlib.
1991Phil Katz คิดค้น DEFLATE สำหรับ PKZIP 2.0 เพื่อแทนที่อัลกอริทึม Implode และ Reduce รุ่นเก่า

ข้อได้เปรียบและจุดเด่นสำคัญ

  • มาตรฐานระดับโลกที่ไม่มีใครเทียบได้: ใช้งานในฮาร์ดแวร์ ระบบปฏิบัติการ และรันไทม์การเขียนโปรแกรมทั้งหมด
  • การออกแบบที่ปลอดสิทธิบัตรและไม่มีค่าลิขสิทธิ์ช่วยให้ทุกภาคส่วนในอุตสาหกรรมคอมพิวเตอร์เข้าถึงได้อย่างเปิดกว้าง
  • การคลายการบีบอัดที่รวดเร็วด้วยการใช้หน่วยความจำน้อยที่สุด (ใช้หน่วยความจำหน้าต่างเลื่อนขนาด 32 KB เท่านั้น)

ข้อจำกัดทางเทคนิคและข้อควรพิจารณา

  • หน้าต่างเลื่อนจำกัดที่ 32 KB ลดประสิทธิภาพการบีบอัดในไฟล์ขนาดใหญ่ที่มีความซ้ำซ้อนในระยะไกล
  • อัตราส่วนการบีบอัดบนทรัพยากรเว็บสมัยใหม่ต่ำกว่าอัลกอริทึมใหม่ ๆ เช่น Brotli และ Zstandard
  • สตรีม DEFLATE ดิบไม่มีเมทาดาทาที่อธิบายตัวเองได้หรือโครงสร้างคอนเทนเนอร์ หากไม่มีตัวห่อหุ้ม zlib หรือ gzip

เกร็ดความรู้ทางเทคนิคที่น่าสนใจ

  • Phil Katz คิดค้น DEFLATE หลังจากถูกฟ้องร้องโดย Unisys เรื่องอัลกอริทึม LZW ที่ได้รับสิทธิบัตรซึ่งใช้ในยูทิลิตี้ PKARC ยุคแรก ๆ
  • ไบต์ส่วนหัว zlib มาตรฐาน '78 9C' ระบุการบีบอัดระดับเริ่มต้น, '78 01' ระบุการบีบอัดระดับต่ำ และ '78 DA' ระบุการบีบอัดระดับสูงสุด
  • ภาพ PNG ทุกภาพบนโลกใช้ DEFLATE เพื่อบีบอัดส่วนพิกเซล IDAT ของมัน

คำถามทางเทคนิคที่พบบ่อย

ความแตกต่างระหว่าง DEFLATE, zlib และ gzip คืออะไร?

DEFLATE คืออัลกอริทึมการบีบอัดแบบดิบ (RFC 1951) ส่วน Zlib ห่อหุ้ม DEFLATE ด้วยส่วนหัวขนาด 2 ไบต์และค่าตรวจสอบ Adler-32 (RFC 1950) และ Gzip ห่อหุ้ม DEFLATE ด้วยข้อมูลเมตาของไฟล์และค่าตรวจสอบ CRC-32 (RFC 1952)

ทำไม PNG ถึงใช้ DEFLATE?

รูปแบบ PNG ถูกสร้างขึ้นในปี 1995 เพื่อแทนที่ GIF โดยไม่ใช้อัลกอริทึม LZW ที่มีสิทธิบัตร และเลือกใช้ DEFLATE แบบเปิดและไม่มีค่าลิขสิทธิ์สำหรับการบีบอัด

ฉันจะคลายไฟล์ .deflate แบบดิบได้อย่างไร?

คุณสามารถคลายสตรีมไบต์ DEFLATE หรือ zlib แบบดิบให้เป็นไฟล์ต้นฉบับที่ไม่ได้บีบอัดได้ด้วย File2File.app บนเว็บเบราว์เซอร์ของคุณโดยตรง